CNode

关于Promise问个问题

问答
Ooyosc发布于10 年前最后回复10 年前4 回复4240 浏览0 收藏

大家面对forEach除了用Promise.all外,还有别的什么办法吗?比如我有一个数组,我要把异步得到的数据插入到数组里的每一个元素去,除了Promise.all之外,还有别的其他办法不?可以给个思路啥的

查看回复

回复 (4)

M
magicdawn#1·10 年前

这几个还是有点差别的哦

O
oyosc#2·10 年前
引用 magicdawn这几个还是有点差别的哦 forEach. 应该等同于 for循环 + await Promise.all 并发为 Infinity 还有 promise.map, 可以自定义并发, blueb...

@magicdawn 是想请教一下,有一个数组,我要把异步得到的数据插入到数组里的每一个元素去,有什么办法呢?个人目前是通过for循环,把数据插入A数组里的每一个元素的操作赋值给一个新的数组B,然后再通过Promise.all(B)从而得到异步插入完成后的新的数组值,想问下还有别的思路不?

M
magicdawn#3·10 年前

有一个数组,我要把异步得到的数据插入到数组里的每一个元素去,有什么办法呢?个人目前是通过for循环,把数据插入A数组里的每一个元素的操作赋值给一个新的数组B,然后再通过Promise.all(B)

forEach

async function  fn(){
  for(let i = 0, len = A.length; i < len; i++){
    B[i] = await getData(A[i])
  }
  return B
}

Promise.all

Promise.all(A.map(getData))

promise.map

var pmap = require('promise.map');

// 5 为并发
pmap(A, getData, 5).then(function(B){
  // B
}, function(err){
  // blabla
})
参与回复
登录后即可参与回复。登录