【发布时间】:2017-06-17 01:37:02
【问题描述】:
我正在创建一个模块,该模块根据它收到的配置执行任务。这些任务是异步的并且正在返回一个承诺。目前只有两个任务要处理,但如果还有更多,我会遇到识别Promise.all() 的哪个结果属于哪个任务的问题。
这是我当前代码的快照:
let asyncTasks = [];
let result = {};
if (config.task0) {
asyncTasks.push(task0(param));
}
if (config.task1) {
asyncTasks.push(task1(param));
}
Promise.all(asyncTasks)
.then(results => {
// TODO: There has to be a prettier way to do this..
if (config.task0) {
result.task0 = results[0];
result.task1 = config.task1 ? results[1] : {};
} else if (config.task1) {
result.task0 = {};
result.task1 = results[0];
} else {
result.task0 = {};
result.task1 = {};
}
this.sendResult(result)
});
配置如下所示:
const config = {
task0: true,
task1: true
};
正如代码中提到的,必须有一种更漂亮、更可扩展的方法来识别哪个结果来自哪个任务,但我找不到任何关于 Promise.all() 的信息可以对此有所帮助。
如果Promise.all() 解析,我如何识别哪个值属于哪个承诺?
【问题讨论】:
-
你可以看看Bluebird,它有很方便的方法来处理你的案子
标签: javascript node.js promise es6-promise