4
Node JS Promise.all和forEach
我有一个类似结构的数组,它公开了异步方法。异步方法调用返回数组结构,从而返回更多异步方法。我正在创建另一个JSON对象来存储从该结构获得的值,因此我需要注意跟踪回调中的引用。 我已经编写了一个蛮力解决方案,但是我想学习一个更惯用或干净的解决方案。 对于n级嵌套,该模式应该是可重复的。 我需要使用promise.all或其他类似的技术来确定何时解析封闭例程。 并非每个元素都必然涉及进行异步调用。因此,在嵌套promise.all中,我不能仅基于索引对我的JSON数组元素进行分配。不过,我确实需要在嵌套的forEach中使用诸如promise.all之类的内容,以确保在解析封闭例程之前已进行了所有属性分配。 我正在使用bluebird promise lib,但这不是必需的 这是一些部分代码- 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();