Promise 是异步编程的一种解决方案,比传统的解决方案—— 回调函数和事件——更合理
和更强大。所谓 Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是 一个异步操作) 的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。 Promise 提供统一的 API ,各种异步操作都可以用同样的方法进行处理。
特点:
1 、 自己身上有 all 、reject 、resolve 这几个方法
2 、原型上有 then 、catch 等方法
3 、一旦建立,就无法取消,这是它的缺点
// 1. promise 就是一个类 可以new
// 2. promise有三个状态 pending(等待) resolve(成功) reject(失败) 一旦pending进入一个状态,则不再改变
// 3. 用户自定义成功和失败以及成功和失败的原因
// 4. promise默认执行器executor 立即执行
// 5. promise的每个实例都有一个then方法,参数有两个,一个是成功的回调,一个是失败的回调
const PENDING = 'PENDING';
const RESOLVE = 'RESOLVE';
const REJECT = 'REJECT';
console.log('my')
class Promise {
constructor(executor){
this.status = PENDING; // 当前状态
this.value = undefined; // 成功的返回值
this.reason = undefined; // 失败的返回值
let resolve = (value) => {
if (this.status === PENDING) {
this.status = RESOLVE;
this.value = value;
}
}
let reject = (reason) => {
if (this.status === PENDING) {
this.status = REJECT;
this.reason = reason;
}
}
try {
executor(resolve, reject); // executor立即执行
} catch (e) {
reject(e);
}
}
then(onFulfilled, onRejected){
if (this.status === RESOLVE ) {
onFulfilled(this.value)
}
if (this.status === REJECT ) {
onRejected(this.reason)
}
}
}
module.exports = Promise;
由于promise对于前端很重要,害怕面试需要手写一个所以。。。。