1234567891011121314151617181920212223242526272829 |
- var Nil = {}
- module.exports = cache
- // cache := (Continuable<T>) => Continuable<T>
- function cache(source) {
- var _err = Nil
- var _value = Nil
- var _result = null
- var listeners = null
- return function continuable(callback) {
- if (_err !== Nil || _value !== Nil) {
- callback(_err, _value)
- } else if (listeners) {
- listeners.push(callback)
- } else {
- listeners = [callback]
- _result = source(function (err, value) {
- _err = err
- _value = value
- listeners.forEach(function (l) { l(err, value) })
- })
- }
- return _result
- }
- }
|