js遍历一个数组,怎么在每次遍历的时候发送一个异步请求,然后请求成功后在进行下一步循环

js遍历一个数组,怎么在每次遍历的时候发送一个异步请求,然后请求成功后在进行下一步循环(主要是下一步循环调请求的时候需要使用上一次请求的数据),在线急等!!

阅读 7.6k
4 个回答

你可能需要了解一下数组迭代器。。。
上面说的有点偏题,其实楼主的问题,上面已经给了答案,只不过答案来的太直接,楼主其实想串行执行一个与数组元素对应的方法,那就是个异步队列,那这个的话,promise是最佳人选啊。

//
function traverse (arr) {
  let i = 0
  let len = arr.length
  return function recursion (d) {
    if (i >= len) return Promise.resolve(d) // 最后一次请求的结果
    let data = arr[i++]
    // let params = { // data是循环的数据,d是上次请求返回的数据
    //   data,
    //   d
    // }
    return new Promise((resolve, reject) => { // promise替换成你的异步请求
      setTimeout(() => {
        resolve(data + d)
      }, 1000)
    }).then(d => { // 处理请求后的数据
      console.log(d)
      recursion(d) // 把请求后的数据传给下一次调用
    })
  }
}

var arr = [1, 2, 3, 4]
var fun = traverse(arr)
fun(0).then(console) // 打印最后一次请求的结果
async function foo() {
    const time1 = 100;
    const time2 = await step1(time1);
    const time3 = await step2(time2);
}

step里return Promise对象

学习以下javascript的Promiseasync...await...这个两个知识。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题