一、什么是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序列只要有一个执行通过,则认为成功,如果全部拒绝,则认为是吧