我想要一种简单的方法来将暂停添加到我与 Promise 链接在一起的一些内容中。
我认为包含一个“等待”方法会很好,这样我就可以编写如下内容:
var promise = new WinJS.Promise(function(complete){
whatever()
}).wait(1000).then(function(){
whatever2();
}).wait(500).done(function(){
alldone();
}
所以为了做到这一点,我向 Promise 类添加了一个等待方法,如下所示:
if (WinJS.Promise.prototype.wait == null) {
WinJS.Promise.prototype.wait = function (milliseconds) {
var promise = new WinJS.Promise(function (complete) {
setTimeout(complete, milliseconds);
});
return promise;
}
}
它似乎正在工作,但我注意到如果我使用“then”,我从中得到的对象,而文档说是 WinJS.Promise,将没有等待功能。我创建的所有承诺都具有等待功能,但是在承诺上调用 .then() 会导致后续的 .wait 失败,所以......
promise.wait(300).then().done();
没问题,但是:
promise.then().wait(300).done();
会出错,说 then() 返回的 Promise 没有等待方法。
谁能解释我做错了什么?