Buckets:
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = timeout; | |
| var _initialParams = require('./internal/initialParams.js'); | |
| var _initialParams2 = _interopRequireDefault(_initialParams); | |
| var _wrapAsync = require('./internal/wrapAsync.js'); | |
| var _wrapAsync2 = _interopRequireDefault(_wrapAsync); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| /** | |
| * Sets a time limit on an asynchronous function. If the function does not call | |
| * its callback within the specified milliseconds, it will be called with a | |
| * timeout error. The code property for the error object will be `'ETIMEDOUT'`. | |
| * | |
| * @name timeout | |
| * @static | |
| * @memberOf module:Utils | |
| * @method | |
| * @category Util | |
| * @param {AsyncFunction} asyncFn - The async function to limit in time. | |
| * @param {number} milliseconds - The specified time limit. | |
| * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) | |
| * to timeout Error for more information.. | |
| * @returns {AsyncFunction} Returns a wrapped function that can be used with any | |
| * of the control flow functions. | |
| * Invoke this function with the same parameters as you would `asyncFunc`. | |
| * @example | |
| * | |
| * function myFunction(foo, callback) { | |
| * doAsyncTask(foo, function(err, data) { | |
| * // handle errors | |
| * if (err) return callback(err); | |
| * | |
| * // do some stuff ... | |
| * | |
| * // return processed data | |
| * return callback(null, data); | |
| * }); | |
| * } | |
| * | |
| * var wrapped = async.timeout(myFunction, 1000); | |
| * | |
| * // call `wrapped` as you would `myFunction` | |
| * wrapped({ bar: 'bar' }, function(err, data) { | |
| * // if `myFunction` takes < 1000 ms to execute, `err` | |
| * // and `data` will have their expected values | |
| * | |
| * // else `err` will be an Error with the code 'ETIMEDOUT' | |
| * }); | |
| */ | |
| function timeout(asyncFn, milliseconds, info) { | |
| var fn = (0, _wrapAsync2.default)(asyncFn); | |
| return (0, _initialParams2.default)((args, callback) => { | |
| var timedOut = false; | |
| var timer; | |
| function timeoutCallback() { | |
| var name = asyncFn.name || 'anonymous'; | |
| var error = new Error('Callback function "' + name + '" timed out.'); | |
| error.code = 'ETIMEDOUT'; | |
| if (info) { | |
| error.info = info; | |
| } | |
| timedOut = true; | |
| callback(error); | |
| } | |
| args.push((...cbArgs) => { | |
| if (!timedOut) { | |
| callback(...cbArgs); | |
| clearTimeout(timer); | |
| } | |
| }); | |
| // setup timer and call original function | |
| timer = setTimeout(timeoutCallback, milliseconds); | |
| fn(...args); | |
| }); | |
| } | |
| module.exports = exports.default; |
Xet Storage Details
- Size:
- 2.76 kB
- Xet hash:
- 9ebdba56efc3d9979485618e028912636b4d5dc25dcd5b0f446dbde4485b32a1
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.