You've already forked Epicnabbo-Catalogus-Updated-Daily
42 lines
904 B
JavaScript
42 lines
904 B
JavaScript
'use strict';
|
|
|
|
const Aigle = require('./aigle');
|
|
const { INTERNAL } = require('./internal/util');
|
|
|
|
class Delay extends Aigle {
|
|
constructor(ms) {
|
|
super(INTERNAL);
|
|
this._ms = ms;
|
|
this._timer = undefined;
|
|
}
|
|
|
|
_resolve(value) {
|
|
this._timer = setTimeout(() => Aigle.prototype._resolve.call(this, value), this._ms);
|
|
return this;
|
|
}
|
|
|
|
_reject(reason) {
|
|
clearTimeout(this._timer);
|
|
Aigle.prototype._reject.call(this, reason);
|
|
}
|
|
}
|
|
|
|
module.exports = { delay, Delay };
|
|
|
|
/**
|
|
* Return a promise which will be resolved with `value` after `ms`.
|
|
* @param {number} ms
|
|
* @param {*} value
|
|
* @return {Aigle} Returns an Aigle instance
|
|
* @example
|
|
* Aigle.delay(10)
|
|
* .then(value => console.log(value); // undefined
|
|
*
|
|
* @example
|
|
* Aigle.delay(10, 'test')
|
|
* .then(value => console.log(value); // 'test'
|
|
*/
|
|
function delay(ms, value) {
|
|
return new Delay(ms)._resolve(value);
|
|
}
|