promise使用总结

一,Promise实例,只要有then里面有return,就可以无线then

特别注释:resolve 和 then里面的return  都可以返回Promise实例,如果promise实例触发了reject,都能走到最外层的reject

function test() {
  return new Promise(resolve => {
    resolve(test2())
  })
}

function test2() {
  return new Promise((resolve, reject) => {
    if (Math.random() * 10 > 5) {
      resolve([])
    } else {
      reject(null)
    }
  })
}

test()
  .then(res => {
    console.log('success')
    console.log(res)
    return 1
  })
  .then(res => {
    console.log(res)
    return 2
  })
  .then(res => {
    console.log(res)
    return 3
  })
  .then(res => {
    console.log(res)
  })
  .catch(res => {
  console.log('error')
  console.log(res)
})

在then里面return promise

function test() {
  return new Promise(resolve => {
    resolve()
  })
}

function test2() {
  return new Promise((resolve, reject) => {
    if (Math.random() * 10 > 5) {
      resolve([])
    } else {
      reject(null)
    }
  })
}

test()
  .then(res => {
    return test2()
  })
  .then(res => {
    console.log(res)
  })
  .catch(res => {
  console.log('error')
  console.log(res)
})

在resolve返回promise实例

function test() {
  return new Promise(resolve => {
    resolve(test2())
  })
}

function test2() {
  return new Promise((resolve, reject) => {
    if (Math.random() * 10 > 5) {
      resolve([])
    } else {
      reject(null)
    }
  })
}

test()
  .then(res => {
    console.log(res)
  })
  .catch(res => {
  console.log('error')
  console.log(res)
})

 Promise.all正确使用,console.log(num)打印的是一个多维数组,多维数组的长度,等于promise.all(Array)里面Array的长度

    Promise.all([axios(), axios()]).then((num) => {
      console.log(num)
    })
原文地址:https://www.cnblogs.com/zph666/p/11751926.html