JS中並行請求接口併合並請求結果

需求:兩個異步請求同時請求遠程接口,並對兩個接口返回的數據進行處理

可以通過 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") //主線程將會率先執行完

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章