摘要:研究时,想过自己模拟下这个异步机制,今天封装了一套简易代码线上代码测试地址为线上测试地址
研究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
摘要:和异步处理调用访问数据采用的方式,这是一个异步过程,异步过程最基本的处理方式是事件或回调,其实这两种处理方式实现原理差不多,都需要在调用异步过程的时候传入一个在异步过程结束的时候调用的接口。 Ajax 和异步处理 调用 API 访问数据采用的 Ajax 方式,这是一个异步过程,异步过程最基本的处理方式是事件或回调,其实这两种处理方式实现原理差不多,都需要在调用异步过程的时候传入一个在异...
摘要:固有对象由标准规定,随着运行时创建而自动创建的对象实例。普通对象由语法构造器或者关键字定义类创建的对象,它能够被原型继承。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入winter的专栏学习【原文有winter的语音】,如有侵权请联系我,邮箱:ka...
摘要:固有对象由标准规定,随着运行时创建而自动创建的对象实例。普通对象由语法构造器或者关键字定义类创建的对象,它能够被原型继承。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入winter的专栏学习【原文有winter的语音】,如有侵权请联系我,邮箱:ka...
阅读 3049·2023-04-25 18:54
阅读 2570·2021-11-02 14:40
阅读 3141·2021-09-23 11:58
阅读 2408·2019-08-30 13:50
阅读 1191·2019-08-29 12:46
阅读 3100·2019-08-28 17:51
阅读 650·2019-08-26 11:47
阅读 866·2019-08-23 16:17