How do I add a specified delay to the resolution of a promise

前端 未结 2 568
傲寒
傲寒 2021-01-24 12:22

I\'d like to define a function that takes a promise, and returns an identical promise, except that the returned promises resolves an arbitrary timeout; my code looks something l

2条回答
  •  隐瞒了意图╮
    2021-01-24 12:49

    I hope you find the implementation of delay in Q insightful. https://github.com/kriskowal/q/blob/master/q.js#L1629-L1637

    Q.delay = function (object, timeout) {
        if (timeout === void 0) {
            timeout = object;
            object = void 0;
        }
        return Q(object).delay(timeout);
    };
    
    Promise.prototype.delay = function (timeout) {
        return this.then(function (value) {
            var deferred = defer();
            setTimeout(function () {
                deferred.resolve(value);
            }, timeout);
            return deferred.promise;
        });
    };
    

提交回复
热议问题