UNPKG

waitsfor

Version:

Wait for truth of a condition using promises

83 lines (70 loc) 2.21 kB
/*! waitsfor 0.0.6 */ (function (global, factory) { if (typeof define === "function" && define.amd) { define("waitsFor", ["exports", "q"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("q")); } else { var mod = { exports: {} }; factory(mod.exports, global.Q); global.waitsFor = mod.exports; } })(this, function (exports, _q) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.waitsFor = waitsFor; function _interopRequire(obj) { return obj && obj.__esModule ? obj["default"] : obj; } var _Q = _interopRequire(_q); var WAIT_INTERVAL = 50; var TIMEOUT = 5000; function waitsFor(func) { var _ref = arguments[1] === undefined ? {} : arguments[1]; var timeout = _ref.timeout; var calls, deferred, dowaitsFor, started; if (!timeout) { timeout = TIMEOUT; } started = +new Date(); calls = 0; deferred = _Q.defer(); (function doWaitsFor() { if (calls > 0 && func.call(func)) { return deferred.resolve(true); } else if (+new Date() > started + timeout) { var timeoutError = new Error("Timeout waiting for " + func.toString()); return deferred.reject(timeoutError); } else { calls++; return setTimeout(doWaitsFor, WAIT_INTERVAL, func); } })(); return deferred.promise; } ; }); /*! waitsfor 0.0.6 */ (function (global, factory) { if (typeof define === 'function' && define.amd) { define('promiseAdaptors/q', ['exports', 'q', '../waitsFor'], factory); } else if (typeof exports !== 'undefined') { factory(exports, require('q'), require('../waitsFor')); } else { var mod = { exports: {} }; factory(mod.exports, global.Q, global.waitsFor); global.promiseAdaptorsQ = mod.exports; } })(this, function (exports, _q, _waitsFor) { 'use strict'; function _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; } var _Q = _interopRequire(_q); var Promise = Object.getPrototypeOf(_Q.defer().promise); Promise.waitsFor = function (conditionFunc) { return (0, _waitsFor.waitsFor)(conditionFunc); }; });