promise详解

一、什么是Promise/A+ 规范?

Promise/A+ 是 Promise 最小的一个规范,它包括

  • Promise状态
  • then方法
  • Promise解析过程
    任何能跑通测试的Prmise实现都能被Promise/A+认可。ES6 Promise只是复核Promise/A+标准实现的其中一个,没有ECMAscript6 Promise规范这个东西

具有Promise状态、then方法、promise解析过程的,能跑通测试的,都被promise/A+规范认可

二、实现简易版的promise?

function Promise(exector) {
    let slef = this;
    let status = "padding";
    let value = undefined;
    let reason = undefined;
  
    //成功执行的函数
    function resolve(value) {
        if(status=="padding") {
            slef.status = "resolve";
            slef.value = value;
        }
    }
    //失败执行的函数
    function reject(reason) {
        if(status=="padding") {
             slef.status = "reject";
            slef.reason = reason;
        }
    }
      //对异常处理
    try {
        exector(resolve, reject)
    }catch(e) {
        reject(e)
    }
}
Promise.prototype.then = function(resolve, reject) {
    let self = this;
    if(self.status=="resolve") {
        resolve(self.value);
    }
     if(self.status=="reject") {
        reject(self.reason);
    }
}

let promise = new Promise((resolve, reject) => {
    resolve("return resolve");
}).then((data, err)=> {
    console.log(`success${data}`)
    console.log(`err${err}`)
})

三、Promise的四个实例方法?

  • Promise.all:Promise序列全部执行通过才认为是成功,否则认为是失败
  • Promise.allSettled:无论成功失败,都会返一个描述每个promise状态结果的对象数组。
  • Promise.race:Promise序列中第一个执行完毕的是通过,则认为是成功,如果第一个执行完毕的Promise是拒绝,则认为是失败
  • Promise.any:Promise序列只要有一个执行通过,则认为成功,如果全部拒绝,则认为是吧
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值