UNPKG

lettuce

Version:

Lettuce JS, Mini Mobile Framework for Romantic with DSL.

41 lines (35 loc) 953 B
/* * Copyright 2012-2013 (c) Pierre Duquesne <stackp@online.fr> * Licensed under the New BSD License. * https://github.com/stackp/promisejs */ function Promise() { this._callbacks = []; } Promise.prototype.then = function(func, context) { var p; if (this._isdone) { p = func.apply(context, this.result); } else { p = new Promise(); this._callbacks.push(function () { var res = func.apply(context, arguments); if (res && typeof res.then === 'function') { res.then(p.done, p); } }); } return p; }; Promise.prototype.done = function() { this.result = arguments; this._isdone = true; for (var i = 0; i < this._callbacks.length; i++) { this._callbacks[i].apply(null, arguments); } this._callbacks = []; }; var promise = { Promise: Promise }; Lettuce.prototype = Lettuce.extend(Lettuce.prototype, promise);