promise

基础知识

  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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更...
    硅谷干货阅读 1,885评论 0 0
  • Promise 的含义 Promise对象有以下两个特点 :(1)对象的状态不受外界影响。Promise对象代表一...
    前端末晨曦吖阅读 3,564评论 0 0
  • 搬运学习,非原创 Promise 的含义 Promise对象有以下两个特点。 (1)对象的状态不受外界影响。Pro...
    wsgdiv阅读 1,443评论 0 0
  • 参考:阮一峰 promise 1.promise含义promise是异步编程的一种解决方案,比传统的解决方案(回调...
    颖小李阅读 1,670评论 0 0
  • 1.Promise 的含义 Promise 是异步编程的一种解决方案 Promise对象有以下两个特点。 (1)对...
    黑云阅读 3,265评论 0 5