loop-grid
Version:
An observable collection of looped event sequences shaped to a grid.
33 lines (26 loc) • 652 B
JavaScript
var Observ = require('observ')
var setImmediate = require('setimmediate2').setImmediate
module.exports = computed
function computed (observables, lambda) {
var values = observables.map(function (o) {
return o()
})
var result = Observ(lambda.apply(null, values))
var pending = false
observables.forEach(function (o, index) {
o(function (newValue) {
values[index] = newValue
if (!pending) {
pending = true
setImmediate(result.refresh)
}
})
})
result.refresh = function () {
if (pending) {
pending = false
result.set(lambda.apply(null, values))
}
}
return result
}