promi的特性,优缺点,动⼿实现promi
promi的特性
1.对象的状态不受外界影响。promi对象代表⼀个异步操作,有3种状态: pending(初始状态),fulfilled(成功状态),rejected(失败状态)。只有异步操作的结果才能决定当前的状态,任何其它操作都不能改变这个状态。
支持英文2.⼀旦状态改变就不会再变,任何时候都可以得到这个结果。promi状态的改变只有两种情况: pending 到 fulfillted, pending 到rejected。
promi优缺点
优点:有了promi对象,就可以把异步操作以同步操作的流程表达出来,避免层层嵌套回调函数,此外promi对象提供统⼀的接⼝,使得控制异步操作更加容易。
argued缺点:⼀旦新建就⽆法取消,会⽴即执⾏。如果不设置回调函数,promi 内部抛出的错误,不会反应到外部。当前处于pending状态,⽆法得知进⾏到哪⼀步了(刚刚开始还是即将结束)。
动⼿实现promi
function promi(callback) {
let that = this;
that.status = 'pending'; //状态
that.value = undefined; //状态为resolved
function resolved (value) {
if (that.status === 'pending') {
that.status = 'resolved';
that.value = value;
}
}
function rejected(reason) {
if(that.status === 'pending') {
fear的用法>winkie
that.status = 'rejected';when pigs fly
}
}
try {
callback(resolved, rejected);
}catch(e){
新概念英语听力rejected(e)
}
promi.prototype.then = (onFulfilled, onRejected) => {
let that = this;
switch(that.status) {
ca 'resolved' : onFulfilled(that.value);break;
长t恤
ca 'rejected' : ason);break;
英语口语900句default;
}
字母歌儿歌视频}
}
const myPromi = new promi((resolve, reject) => {
resolve(1)
})
myPromi.then((x) => console.log(x))