【发布时间】:2016-11-25 11:47:43
【问题描述】:
在我的代码中,我有条件任务,它们都返回一个承诺。我需要按顺序运行任务。
我当前的实现如下所示:
var chain = [];
if (/* some condition for task A */) {
chain.push(function(doContinue){
taskA().then(doContinue);
});
}
if (/* some condition for task B */) {
chain.push(function(doContinue){
taskB().then(doContinue);
});
}
if (/* some condition for task C */) {
chain.push(function(doContinue){
taskC().then(doContinue);
});
}
var processChain = function () {
if (chain.length) {
chain.shift()(processChain);
} else {
console.log("all tasks done");
}
};
processChain();
这很好用,但最初我正在寻找一种方法来创建仅使用 Promises 的链并使用 .then 链接所有函数,但我无法获得可行的解决方案。
如果有一种更简洁的方法,只使用 Promise 和 then 调用链,那么我很乐意看到一个例子。
【问题讨论】:
-
您需要异步评估条件(即在上一个承诺步骤之后)还是同步评估?
-
@Bergi 条件可以在开始时评估,不依赖promise生成的结果。
-
那么raina77ows 解决方案非常适合您。
标签: javascript promise