waitsfor
Version:
Wait for truth of a condition using promises
83 lines (70 loc) • 2.21 kB
JavaScript
/*! 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);
};
});