仕事で遭遇する一つの問題
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) => {
// ......
})
})