Skip to content

串行

请求是异步的,需要等待上一个请求成功,才能发送下一个请求,导致回调地狱。

并行

同时发送多个请求,等待所有请求都成功再去做一些事。

Promise 解决串行

javascript
// 串行
function ajax1 () {
  return new Promise((resolve, reject) => {
    $.ajax({
      url: './data.json',
      success: result => {
        resolve(result)
      }
    })
  })
}

function ajax2 () {
  return new Promise((resolve, reject) => {
    $.ajax({
      url: './data.json',
      success: result => {
        resolve(result)
      }
    })
  })
}

function ajax3 () {
  return new Promise((resolve, reject) => {
    $.ajax({
      url: './data.json',
      success: result => {
        resolve(result)
      }
    })
  })
}

// 1
ajax1()
  .then(data1 => ajax2(data1))
  .then(data2 => ajax3(data2))
  .then(data3 => console.log(data3))

// 2
async function getData () {
  const data1 = await ajax1()
  const data2 = await ajax2(data1)
  const data3 = await ajax3(data2)

  console.log(data3)
}

Promise 解决并行

javascript
Promise
  .all[ajax1(), ajax2(), ajax3()]
  .then(val => {
    console.log(val)
  })