资讯专栏INFORMATION COLUMN

javascript模拟原生Promise语法

jsdt / 1049人阅读

摘要:研究时,想过自己模拟下这个异步机制,今天封装了一套简易代码线上代码测试地址为线上测试地址

研究Promise时,想过自己模拟下这个异步机制,今天封装了一套简易代码:

let Pms=null;
(function () {
    function execFn(pms,type,data) {
        let {[type+"Arr"]:arr,status}=pms;
        if (status != "pending" ) return;
        arr.forEach((fn,index)=>{
            fn.call(pms, data);
        });
        pms.status= type == "suc"? "fulfilled":"rejected";
        pms.args=data;
    }
    Pms=class{
       constructor(callBack){
           this.status="pending";
           this.sucArr=[];
           this.errorArr=[];
           this.args="";
           callBack.apply(null, [execFn.bind(null, this,"suc"),execFn.bind(null, this,"error")]);
       }
        then(sucFn,errorFn){
            this.sucArr.push(sucFn);
            if (this.status == "fulfilled"){
                sucFn.call(this, this.args);
            }
            if (typeof errorFn != "undefined"){
                this.catch(errorFn);
            }
        }
        catch(errorFn){
            this.errorArr.push(errorFn);
            if (this.status == "rejected"){
                errorFn.call(this, this.args);
            }
        }
    }
})();

线上代码测试地址为:
线上测试地址

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87400.html

相关文章

  • Babel的使用

    摘要:使用的时候只需要安装你想要的阶段就可以了然后添加进你的配置文件。为了显出的能耐,我们分别配个用和支持的先来配使用的首先安装然后配置需要注意的是,虽然没有出现在配置里,但仍然需要安装,因为依赖它。 Babel介绍 Babel 把用最新标准编写的 JavaScript 代码向下编译成可以在今天随处可用的版本。 这一过程叫做源码到源码编译, 也被称为转换编译。 15 年 11 月,Babel...

    Y3G 评论0 收藏0
  • 前后分离模型之封装 Api 调用

    摘要:和异步处理调用访问数据采用的方式,这是一个异步过程,异步过程最基本的处理方式是事件或回调,其实这两种处理方式实现原理差不多,都需要在调用异步过程的时候传入一个在异步过程结束的时候调用的接口。 Ajax 和异步处理 调用 API 访问数据采用的 Ajax 方式,这是一个异步过程,异步过程最基本的处理方式是事件或回调,其实这两种处理方式实现原理差不多,都需要在调用异步过程的时候传入一个在异...

    trilever 评论0 收藏0
  • 重学前端学习笔记(九)--JavaScript中的对象分类

    摘要:固有对象由标准规定,随着运行时创建而自动创建的对象实例。普通对象由语法构造器或者关键字定义类创建的对象,它能够被原型继承。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入winter的专栏学习【原文有winter的语音】,如有侵权请联系我,邮箱:ka...

    ShowerSun 评论0 收藏0
  • 重学前端学习笔记(九)--JavaScript中的对象分类

    摘要:固有对象由标准规定,随着运行时创建而自动创建的对象实例。普通对象由语法构造器或者关键字定义类创建的对象,它能够被原型继承。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入winter的专栏学习【原文有winter的语音】,如有侵权请联系我,邮箱:ka...

    tinna 评论0 收藏0

发表评论

0条评论

jsdt

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<