【发布时间】:2018-02-22 01:45:31
【问题描述】:
我很难理解如何处理需要一起解决的承诺组。
在我的情况下,我想根据一组 id 进行一系列承诺调用,并有选择地将它们添加到输出数组中。如果这是 PHP,我会这样做:
$output = []
foreach($input as $id) {
$result1 = functioncall1($id);
$result2 = functioncall2($result1);
if ($result2 == 'some filter') {
$output[] = $result1;
}
}
这不能通过异步调用来完成,因为循环不会等待结果返回。所以我像这样使用蓝鸟的承诺:
Promise.map(input, function(id) {
promisifedFunction1(id)
.then(function(result1) {
//process result1 some more
promisifedFunction2(result1)
.then(function(result2) {
//process result2 some more
if (result2 == 'some filter') {
return result1;
});
});
})
.then(function(output) {});
}
我显然在这里遗漏了一些东西,因为我的输出只包含一个未定义的数组。然而,当我期望它时,它显然是映射并达到最终结果,并且只有在过滤正常时才会生成那些未定义的数组。即使过滤器只返回一个文字字符串,也会产生 undefined。
我正在清除遗漏的东西,但我正在努力填补空白。
【问题讨论】:
-
Promise.all... developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
标签: javascript node.js promise