Sha256: 5cc7720faec4af9c444e1ed3685bb14e9425169322895b6be4fc4333d2adddb4

Contents?: true

Size: 779 Bytes

Versions: 41

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

41 entries across 40 versions & 15 rubygems

Version Path
tang-0.0.9 spec/tang_app/node_modules/websocket-extensions/lib/pipeline/pledge.js
enju_library-0.3.8 spec/dummy/node_modules/websocket-extensions/lib/pipeline/pledge.js
ilog-0.4.1 node_modules/websocket-extensions/lib/pipeline/pledge.js
ilog-0.4.0 node_modules/websocket-extensions/lib/pipeline/pledge.js
ilog-0.3.3 node_modules/websocket-extensions/lib/pipeline/pledge.js
jester-data-8.0.0 node_modules/websocket-extensions/lib/pipeline/pledge.js
ezii-os-5.2.1 node_modules/websocket-extensions/lib/pipeline/pledge.js
ezii-os-2.0.1 node_modules/websocket-extensions/lib/pipeline/pledge.js
ezii-os-1.1.0 node_modules/websocket-extensions/lib/pipeline/pledge.js
ezii-os-1.0.0 node_modules/websocket-extensions/lib/pipeline/pledge.js
ezii-os-0.0.0.1.0 node_modules/websocket-extensions/lib/pipeline/pledge.js
ezii-os-0.0.0.0.1 node_modules/websocket-extensions/lib/pipeline/pledge.js
blsk-sevcore-0.0.2 blsk_old/bluesky-doc/bluesky-doc/node_modules/websocket-extensions/lib/pipeline/pledge.js
optimacms-0.4.3 spec/dummy/node_modules/websocket-extensions/lib/pipeline/pledge.js
optimacms-0.4.2 spec/dummy/node_modules/websocket-extensions/lib/pipeline/pledge.js
cortex-0.1.3 spec/dummy/node_modules/websocket-extensions/lib/pipeline/pledge.js
dragonfly_puppeteer-0.1.0 node_modules/websocket-extensions/lib/pipeline/pledge.js
lanes-0.8.0 node_modules/websocket-extensions/lib/pipeline/pledge.js
gulp_assets-1.0.0.pre.5 template/node_modules/gulp-livereload/node_modules/tiny-lr/node_modules/faye-websocket/node_modules/websocket-driver/node_modules/websocket-extensions/lib/pipeline/pledge.js
gulp_assets-1.0.0.pre.4 template/node_modules/gulp-livereload/node_modules/tiny-lr/node_modules/faye-websocket/node_modules/websocket-driver/node_modules/websocket-extensions/lib/pipeline/pledge.js