鍍金池/ 問答/HTML/ js遍歷一個數(shù)組,怎么在每次遍歷的時候發(fā)送一個異步請求,然后請求成功后在進行下一

js遍歷一個數(shù)組,怎么在每次遍歷的時候發(fā)送一個異步請求,然后請求成功后在進行下一步循環(huán)

js遍歷一個數(shù)組,怎么在每次遍歷的時候發(fā)送一個異步請求,然后請求成功后在進行下一步循環(huán)(主要是下一步循環(huán)調(diào)請求的時候需要使用上一次請求的數(shù)據(jù)),在線急等??!

回答
編輯回答
厭惡我

你可能需要了解一下數(shù)組迭代器。。。
上面說的有點偏題,其實樓主的問題,上面已經(jīng)給了答案,只不過答案來的太直接,樓主其實想串行執(zhí)行一個與數(shù)組元素對應(yīng)的方法,那就是個異步隊列,那這個的話,promise是最佳人選啊。

2017年5月12日 22:54
編輯回答
悶油瓶

學(xué)習(xí)以下javascript的Promiseasync...await...這個兩個知識。

2018年8月27日 17:50
編輯回答
脾氣硬
async function foo() {
    const time1 = 100;
    const time2 = await step1(time1);
    const time3 = await step2(time2);
}

step里return Promise對象

2017年2月11日 17:44
編輯回答
涼汐
function traverse (arr) {
  let i = 0
  let len = arr.length
  return function recursion (d) {
    if (i >= len) return Promise.resolve(d) // 最后一次請求的結(jié)果
    let data = arr[i++]
    // let params = { // data是循環(huán)的數(shù)據(jù),d是上次請求返回的數(shù)據(jù)
    //   data,
    //   d
    // }
    return new Promise((resolve, reject) => { // promise替換成你的異步請求
      setTimeout(() => {
        resolve(data + d)
      }, 1000)
    }).then(d => { // 處理請求后的數(shù)據(jù)
      console.log(d)
      recursion(d) // 把請求后的數(shù)據(jù)傳給下一次調(diào)用
    })
  }
}

var arr = [1, 2, 3, 4]
var fun = traverse(arr)
fun(0).then(console) // 打印最后一次請求的結(jié)果
2017年11月27日 07:08