123456789101112131415161718192021222324252627282930 |
- 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
- }
- }
|