我想要一個簡單的方法來將暫停添加到某些與承諾鏈接在一起的東西。擴展WinJS Promise對象
我認爲這將是很好,包括「等待」的方法,所以我可以寫這樣的東西:
var promise = new WinJS.Promise(function(complete){
whatever()
}).wait(1000).then(function(){
whatever2();
}).wait(500).done(function(){
alldone();
}
因此,要做到這一點,我添加了一個wait方法的承諾類,像這樣:
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,不會有等待函數。我創建了所有承諾確實有等待功能,但調用。那麼()中承諾將導致後續.wait失敗,所以......
promise.wait(300).then().done();
是沒有問題的,但是:
promise.then().wait(300).done();
會錯誤地指出從then()返回的Promise沒有等待方法。
任何人都可以解釋我做錯了什麼?
感謝您的回覆。我認爲你的回報類型並非真正的承諾是正確的,即使智能感知文件說明了這一點。我曾看過超時選項,但不能將其稱爲Promise實例。你可以調用WinJS.Promise。timeout(1000),但你不能像這樣在一個鏈中使用它:var o = new WinJS.Promise(function(){})。timeout(1000);這正是我試圖用我的等待功能做的事情。 – chrismay