首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Node JS Promise.all和forEach

Node JS Promise.all和forEach
EN

Stack Overflow用户
提问于 2015-07-15 01:46:17
回答 4查看 255.9K关注 0票数 147

我有一个类似数组的结构,它公开了异步方法。异步方法调用返回数组结构,该结构又公开更多的异步方法。我正在创建另一个JSON对象来存储从这个结构中获得的值,因此我需要小心跟踪回调中的引用。

我已经编写了一个暴力解决方案,但我想学习一个更惯用或更干净的解决方案。

  1. 该模式应可重复n层嵌套。
  2. 我需要使用promise.all或一些类似的技术来确定何时解析封闭例程。
  3. 不是每个元素都必须涉及进行异步调用。因此,在嵌套的promise.all中,我不能简单地根据索引对JSON数组元素进行赋值。不过,我确实需要在嵌套的forEach中使用类似于promise.all的内容,以确保在解析封闭例程之前已经完成了所有属性赋值。
  4. 我使用的是bluebird promise库,但这不是必需的

以下是一些部分代码-

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();
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31413749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档