美文网首页
写一个 构造函数 Promise

写一个 构造函数 Promise

作者: _William_Zhang | 来源:发表于2018-09-25 21:19 被阅读3次

实现 Promise 的简化版,满足以下需求即可

function Promise(???){
    ???
    return ???
}

var promise = new Promise(function(x,y){
    setTimeout(()=>{
        x(101)
    }, 3000)
})
promise.then((z)=>{
    console.log(z)  // 101
})

Promise 简化版本
function Promise(fn){
    var status = 'pending'
    function successNotify(){
        status = 'resolved'
        toDoThen.apply(undefined, arguments)
    }
    function failNotify(){
        status = 'rejected'
        toDoThen.apply(undefined, arguments)
    }
    function toDoThen(){
        setTimeout(()=>{ // 保证回调是异步执行的
            if(status === 'resolved'){
                for(let i =0; i< successArray.length;i ++)    {
                    successArray[i].apply(undefined, arguments)
                }
            }else if(status === 'rejected'){
                for(let i =0; i< failArray.length;i ++)    {
                    failArray[i].apply(undefined, arguments)
                }
            }
        })

    }
    var successArray = []
    var failArray = []
    fn.call(undefined, successNotify, failNotify)
    return {
        then: function(successFn, failFn){
            successArray.push(successFn)
            failArray.push(failFn)
            return undefined // 简化
        }
    }
}
时序图

相关文章

  • Promise

    ES规定,Promise对象是一个构造函数,用来生成Promise实例 Promise 构造函数接受一个函数作为参...

  • promise用法

    Promise笔记 1.promise构造函数 Promise是一个构造函数,传参是一个function(reso...

  • ES6 Promise 异步2

    概念: Promise 是一个构造函数,既然是构造函数,就可以 new promise()一个 promise 实...

  • Promise(补充)

    Promise 是一个 构造函数,既然是构造函数, 那么,我们就可以 new Promise() 得到一个 Pr...

  • day02-vuejs-Promise(补充)

    Promise 是一个 构造函数,既然是构造函数, 那么,我们就可以 new Promise() 得到一个 Pr...

  • Promise从入门到拿Offer之手写Promise

    1、Promise构造函数的实现 Promise构造函数用来声明示例对象,需要传入一个执行器函数。其中包括reso...

  • Promise、Generator 函数

    Promise对象是一个构造函数,用来生成Promise实例 resolve函数改变promise状态从Pendi...

  • Promise函数介绍和用法

    Promise函数(异步请求操作可用) Promise用法 Promise其实是一个构造函数 ! 使用方法如下: ...

  • 一步步解析Promise

    new Promise(a函数) -> 构造函数(ParamFun=a函数)构造函数类运行a函数(),需要参数...

  • 使用 ES6 实现一个简单的 Promise

    Promise 基本结构 构造函数 Promise 必须接受一个函数作为参数,同时这个函数又包含 resolve ...

网友评论

      本文标题:写一个 构造函数 Promise

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