forEach异步

407 阅读1分钟

代码

arr.forEach(async o => {
  const thirdPartyBalances = []
  // console.log(thirdPartyBalances) // 1
  await getThirdPartyBalance({ third_party: o.id }) // 异步转同步
    .then(r => {
      // console.log(r) // 2
      thirdPartyBalances.push({
        name: o.name, // 第三方应用的名字
        balances: r.balances.map(o => ({
          id: o.id,
          code: o.id, // 第三方的字段转换成beex的字段
          amount: o.amount,
        })),
      })
    })
    .catch(err => {
      console.log(err)
    })
  // 这里拿到了所有的第三方账户信息,可以统一保存在vuex和localStorage
  // console.log(thirdPartyBalances) // 3
})

如果没有await 那么打印顺序是1-3-2, 现在加了await,打印顺序变成了1-2-3,正确拿到了所有的数据。