我有一個承諾,返回功能,做一些異步的東西,我們稱之爲functionToRepeat()
。Javascript的承諾:鏈同樣的承諾n次,然後做別的事
我正在嘗試編寫函數repeatFunction(amount)
,以便它將啓動承諾,等待完成,再次啓動,等待完成等等。這個repeatFunction(amount)
也應該是可以接受的,以便我可以在執行完其他東西之後進行鏈接。
這裏是我的嘗試:
function functionToRepeat(){
let action = new Promise(function(resolve,reject){
setTimeout(function(){
console.log("resolved!");
resolve()}
,1000);
})
return action
}
function repeatFunction(amount) {
if(amount==0){
return Promise.resolve();
}
return functionToRepeat().then(function(){
repeatFunction(amount-1);
});
}
repeatFunction(5).then(function(){
console.log("DONE!");
})
這成功鏈我的諾言(或因此它接縫,在控制檯中我得到一個「解決了!」每秒)。 但是.then()
我試圖在我的repeatFunction(5)
在第一個承諾結束後發生鏈接,而不是在所有5個結束之後!
因此,在我的控制檯中,我得到:
已解決! 完成! 解決! 解決! 解決! 解決!
我在做什麼錯,我應該改變什麼?
這真的很不錯,但_...這個'repeatFunction(amount)'也應該是可以的... __ –