【问题标题】:Promise in foreach loopforeach 循环中的承诺
【发布时间】:2018-08-27 13:30:30
【问题描述】:

我在使用 foreach 循环时遇到了一些困难。这是我的情况: 我在对象数组中有一些元素。我需要对每个对象执行 2 个查询。比我需要下一个对象并做同样的事情等等。

我为查询做了两种方法:

function insertObj(locationId, cartId, quantity){
        return models.orders_cart.create({
            quantity: quantity,
            cartId: cartId,
            locationId: locationId,
        });
    }

function insertObj2(locationId, cartId, quantity){
    return models.orders_cart.create({
        quantity: quantity,
        cartId: cartId,
        locationId: locationId,
    });
}

.create 返回一个承诺,所以我可以使用 then。这是我的 foreach 循环。

locations.forEach(function (element) {

});

我需要这两种方法。等待结果并进入下一个迭代。我真的不知道如何正确地使用承诺。

【问题讨论】:

标签: javascript node.js ecmascript-6 es6-promise


【解决方案1】:

如果你可以使用 async-await 就可以了:

async runAsync(locations){
  for(let location of locations){
    await something();
    await something1();
  };
}

【讨论】:

  • forEach 在迭代之间不等待,甚至允许等待完整的循环
  • 尝试使用 for..of 代替 forEach 方法,此方法存在问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2016-02-19
  • 2017-06-22
相关资源
最近更新 更多