【发布时间】:2017-10-04 19:37:47
【问题描述】:
我正在构建带有 setTimeouts 的 Promise 链。所有的 Promise 都需要串联而不是并行运行。我正在使用 Bluebird 模块来实现 Promise 执行的串行流。
谁能解释一下为什么这段代码给我的输出是 1,2,3,4 而不是 4,3,2,1?
var bluebirdPromise = require('bluebird');
function p1(value) {
return new Promise(function(resolve, reject) {
setTimeout(function(resolve) {
console.log(value);
resolve;
}, value * 1000);
});
}
var arr = [p1(4), p1(3), p1(2), p1(1)];
bluebirdPromise.reduce(arr,
function(item, index, length) {
}).then(function (result) {
});
【问题讨论】:
-
当您调用
p1时,您已经开始操作。您的arr解决方案不起作用。 -
标签: javascript promise bluebird es6-promise