美文网首页js css html理论知识JavaScript
22:介绍一下 promise,及其底层如何实现

22:介绍一下 promise,及其底层如何实现

作者: 小小前端搬运工 | 来源:发表于2022-05-29 22:01 被阅读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!'); 
    });
    

    相关文章

      网友评论

        本文标题:22:介绍一下 promise,及其底层如何实现

        本文链接:https://www.haomeiwen.com/subject/cmdnprtx.html