需求:兩個異步請求同時請求遠程接口,並對兩個接口返回的數據進行處理
可以通過 es6的 Promise.all 進行處理
function request1_fun(time) {
return new Promise(resolve => {
setTimeout(() => {
let time = new Date().getTime()
console.log("request1_fun, time:"+time)
resolve(time)
}, time)
})
}
function request2_fun(time) {
return new Promise(resolve => {
setTimeout(() => {
let time = new Date().getTime()
console.log("request2_fun, time:"+time)
resolve(
{name:"hugo"}
)
}, time)
})
}
const startTime = new Date().getTime()
console.log("request start time:"+startTime)
let request1 = request1_fun(3000)
let request2 = request2_fun(2000)
//合併兩個請求的結果,等待兩個請求都完成後才執行then
Promise.all([request1, request2])
.then(res => {
let time = new Date().getTime()
console.log("merge, time:"+time) //時間爲最後一個執行的請求的時間
console.log("請求1的結果:"+res[0])
console.log("請求2的結果:"+res[1].name)
})
console.log("aaa") //主線程將會率先執行完