Promise

Promise

一、语法

new Promise(function(resolve,reject){
    ... 
}/* executor */)
  • 参数
    • executor是带有resolvereject两个参数的函数
    • Promise构造函数执行时立即调用executor函数
    • resolve和reject函数被调用时,分别将promise的状态改编为fulfilled(成功)和rejected(失败)
    • 如果executor函数跑出一个错误,那么该promise状态为rejected

二、描述

  • 一个promise有以下集中状态:
    • pending 初始状态
    • fulfilled 操作成功
    • rejected 操作失败

三、方法

  1. Promise.all(iterable)
    • 返回一个新的promise对象,该promise对象在iterable参数对象里所有的promise对象都成功的时候才会触发成功,一旦有任何一个iterable里面的promise对象失败则立即触发该promise对象的失败。
    • 新的promise对象在触发成功状态以后,会把一个包含iterable里所有promise返回值的数组作为成功回调的返回值,顺序跟iterable的顺序保持一致;如果这个新的promise对象触发了失败状态,它会把iterable里第一个触发失败的promise对象的错误信息作为它的失败错误信息
  2. Promise.allSettled(iterable)
  3. Promise.any(iterable)
    • 接收一个Promise对象的集合,当其中的一个promise 成功,就返回那个成功的promise的值。
  4. Promise.race(iterable)
  • 接收一个Promise对象的集合,当其中的一个promise 成功,就返回那个成功的promise的值。
  1. Promise.reject(reason)
    • 返回一个状态为失败的Promise对象,并将给定的失败信息传递给对应的处理方法
  2. Promise.resolve(value)
    • 返回一个状态由给定value决定的Promise对象。
    • 如果你不知道一个值是否是Promise对象,使用Promise.resolve(value)来返回一个Promise对象,这样就能将该value以Promise对象形式使用。

四、创建Promise

  1. 创建
const myPromise = new Promise((resolve,reject)=>{
    // resolve(someValue)  => fulfilled
    // or
    // reject(failure reason) => rejected
})


  1. 想要某个函数拥有promise的功能,只要让其返回一个promise即可
function fn(){
    return new Promise((resolve,reject)=>{
        // ...
    })
}
  1. 错误捕获

new Promise((resolve,reject)=>{
    resolve()
}).then(res=>{

}).catch(err=>{
    //catch如果不再抛出错误的话也会返回一个promise对象,且是resolve状态
}).then(res=>{
    //如果有错误且catch执行之后没有再抛出新错误就会执行该处的语句
}
  1. then()
    • .then()函数如果返回新的promise,那么下一级.then()会在新的promise状态改变后做出响应
    • .then()函数如果返回其他任何值,那么下一级.then()会立即执行
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容