类别:js / 日期:2022-11-14 / 浏览:261 / 评论:0

Promise 是一个对象,保存着未来将要结束的事件,她有两个特征:
1、对象的状态不受外部影响,Promise 对象代表一个异步操作,有三种状态,pending进行中,fulfilled 已成功,rejected 已失败,只有异步操作的结果,才可以决定当前是哪一种状态,任何其他操作都无法改变这个状态,这也就是 promise 名字的由来

2、一旦状态改变,就不会再变,promise 对象状态改变只有两种可能,从 pending 改到fulfilled 或者从 pending 改到 rejected,只要这两种情况发生,状态就凝固了,不会再改变,这个时候就称为定型 resolved, Promise 的基本用法

let promise1 = new Promise(function(resolve,reject){
    setTimeout(function(){
        resolve('ok')
    },1000)
})
promise1.then(function success(val){
    console.log(val)
})
最简单代码实现 promise
class PromiseM {
    constructor (process) {
        this.status = 'pending' 
        this.msg = '' 
        process(this.resolve.bind(this), this.reject.bind(this))
        return this
    }
    resolve (val) {
        this.status = 'fulfilled' this.msg = val
    }
    reject (err) {
        this.status = 'rejected' this.msg = err
    }
    then (fufilled, reject) {
        if(this.status === 'fulfilled') {
            fufilled(this.msg)
        }
        if(this.status === 'rejected') {
            reject(this.msg)
        }
    }
}
//测试代码
var mm=new PromiseM(function(resolve,reject){
    resolve('123');
});
mm.then(function(success){
    console.log(success);
},function(){
    console.log('fail!');
});

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。

«    2023年11月    »
12345
6789101112
13141516171819
20212223242526
27282930

最新留言