我試圖瞭解es6的承諾。據我瞭解,它們可以被鏈接在一起執行。它不起作用。ES6中的順序承諾JavaScript無法正常工作
console.log("Started");
function doStuff(num, timeout) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
console.log("now " + num);
resolve();
}, timeout);
});
}
doStuff(1, 3000).then(doStuff(2, 2000)).then(doStuff(3, 1000));
然而輸出爲:
$ node test
Started
now 3
now 2
now 1
我期待相反的順序。我明白爲什麼會這樣,他們都排隊等候並以「反向」順序結束。
但事情是,我認爲第二個沒有執行,直到第一個完成,等等。我錯過了什麼?
您必須將函數傳遞給'.then',而不是承諾。 –