为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

SMILET 2019-03-22 19:15:24
js遍历一个数组,怎么在每次遍历的时候发送一个异步请求,然后请求成功后在进行下一步循环(主要是下一步循环调请求的时候需要使用上一次请求的数据),在线急等!!
查看完整描述

4 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-04-02
?
精慕HU

TA贡献1845条经验 获得超8个赞

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) // 打印最后一次请求的结果


查看完整回答
反对 回复 2019-04-02
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-04-02
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

async function foo() {

    const time1 = 100;

    const time2 = await step1(time1);

    const time3 = await step2(time2);

}

step里return Promise对象


查看完整回答
反对 回复 2019-04-02
  • 4 回答
  • 0 关注
  • 3343 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信