【发布时间】:2017-10-09 21:56:17
【问题描述】:
我正在尝试理解 es6 Promises。据我了解,它们可以链接起来按顺序执行。它不适用于个案。
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,而不是一个promise。