promise

作者: devmao | 来源:发表于2022-07-30 17:44 被阅读0次

    基础知识

      testPromise() {
        let p = new Promise((resolve, reject) => {
          setTimeout(() => {
            console.log('执行完成')
            resolve('我成功了')
            // reject('我失败了')
          }, 2000);
        })
        return p
      },
    
    // 调用
     this.testPromise().then(res => {
          console.log(res)
        }).catch(err => {
          console.log(err)
        })
    
    

    Promise的三种状态:pending(待定) 、fulfilled(已执行) 、rejection(已拒绝)
    一个构造函数:new Promise
    两个实例方法:.then 对应fulfilled .catch对应rejection
    两个常用方法:Promise.all、Promise.race

    使用promise避免回调地狱

    // 日常回调地狱
    getData1(data1 => {
      getData2(data1, data2 => {
        getData3(data2, data3 => {
          getData4(data3, data4 => {
            getData5(data4, data5 => {
              // 终于取到data5了
            })
          })
        })
      })
    })
    
    // 使用Promise避免回调地狱
    getData1()
    .then(getData2)
    .then(getData3)
    .then(getData4)
    .then(getData5)
    .then(data => {
      // 取到最终data了
    })
    })
    

    相关函数

    1. Promise.all
    Promise.all([this.testPromise(), this.testPromise1(), this.testPromise2()]).then(res => {
          console.log('--------------promise.all success-----------', res)
        }).catch(err => {
          console.log('--------------promise.all fail-----------', err)
        })
    

    并行执行异步操作的能力,会在所有异步操作执行完后才执行回调。如果都执行成功,就会执行then的回调;如果有一个执行失败,就会执行catch的回调。

    1. Promise.race
      all方法的效果实际上是「谁跑的慢,以谁为准执行回调」,那么相对的就有另一个方法「谁跑的快,以谁为准执行回调」,即Promise.race。使用场景

    参考

    大白话讲解Promise(一) - 吕大豹 - 博客园 (cnblogs.com)

    相关文章

      网友评论

          本文标题:promise

          本文链接:https://www.haomeiwen.com/subject/kciufrtx.html