Sha256: 5cc7720faec4af9c444e1ed3685bb14e9425169322895b6be4fc4333d2adddb4
Contents?: true
Size: 779 Bytes
Versions: 38
Compression:
Stored size: 779 Bytes
Contents
'use strict'; var RingBuffer = require('./ring_buffer'); var Pledge = function() { this._complete = false; this._callbacks = new RingBuffer(Pledge.QUEUE_SIZE); }; Pledge.QUEUE_SIZE = 4; Pledge.all = function(list) { var pledge = new Pledge(), pending = list.length, n = pending; if (pending === 0) pledge.done(); while (n--) list[n].then(function() { pending -= 1; if (pending === 0) pledge.done(); }); return pledge; }; Pledge.prototype.then = function(callback) { if (this._complete) callback(); else this._callbacks.push(callback); }; Pledge.prototype.done = function() { this._complete = true; var callbacks = this._callbacks, callback; while (callback = callbacks.shift()) callback(); }; module.exports = Pledge;
Version data entries
38 entries across 37 versions & 14 rubygems