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") //主线程将会率先执行完

 

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