非同期要求の順序のためのループがどのように一致していません。

仕事で遭遇する一つの問題

forループ、および次いでサイクル及び第2の要求IDのうち

問題へのこのリード

リターン注文要求の結果に矛盾

理由:マイクロタスクのイベントキューを置く、非同期コールバック要求は、タスクがイベントキューメカニズムを特に参照して、完成された後、マクロミクロタスクを実行します

ソリューション:

マップ法による要求が循環します

この方法は、非同期要求をカプセル化する約束を返します。

これは約束を複数有する配列を返します。

promise.allによって()メソッドは、新しいインスタンス内にパッケージ約束することを約束します

// 通过Promise把所有的异步请求放进事件队列中
getInfo(item ,index) {
    const ms = 1000 * Math.ceil(Math.random() * 3)
    return new Promise((resolve,reject) => {
        setTimeout(() => {
           axios.get(id).then((result) => {
               resolve(result)
           })
        }, ms)
    })
}

// 返回多个promise
let promise = arr.map((item,index) = > {
    arr.forEach((item, index) => {
        return getInfo(item, index)
    })
})
// 对返回的promise数组进行操作
Peomise.all(promise).then((allData) => {
    arr.forEach((item, index) => {
        // ......
    })
})

おすすめ

転載: blog.51cto.com/14646119/2460862