Node JS Promise.all 和 forEach
2022-08-30 02:41:36
我有一个类似数组的结构,它公开了异步方法。异步方法调用返回数组结构,而这些数组结构又公开更多的异步方法。我正在创建另一个JSON对象来存储从此结构获得的值,因此我需要小心跟踪回调中的引用。
我已经编写了一个蛮力解决方案,但我想学习一个更习惯或更干净的解决方案。
- 对于 n 级嵌套,该模式应该是可重复的。
- 我需要使用 promise.all 或一些类似的技术来确定何时解决封闭例程。
- 并非每个元素都必然涉及进行异步调用。因此,在嵌套 promise.all 中,我不能简单地根据索引对我的 JSON 数组元素进行分配。尽管如此,我确实需要在嵌套的 forEach 中使用类似 promise.all 的东西,以确保在解析封闭例程之前已经完成了所有属性赋值。
- 我正在使用蓝鸟承诺库,但这不是必需的
下面是一些部分代码 -
var jsonItems = [];
items.forEach(function(item){
var jsonItem = {};
jsonItem.name = item.name;
item.getThings().then(function(things){
// or Promise.all(allItemGetThingCalls, function(things){
things.forEach(function(thing, index){
jsonItems[index].thingName = thing.name;
if(thing.type === 'file'){
thing.getFile().then(function(file){ //or promise.all?
jsonItems[index].filesize = file.getSize();