图解 Promise 实现原理(一)—— 基础实现
本文首发于 vivo互联网技术 微信公众号
链接: https://mp.weixin.qq.com/s/UNzYgpnKzmW6bAapYxnXRQ
作者:孔垂亮
很多同学在学习 Promise 时,知其然却不知其所以然,对其中的用法理解不了。本系列文章由浅入深逐步实现 Promise,并结合流程图、实例以及动画进行演示,达到深刻理解 Promise 用法的目的。
本系列文章有如下几个章节组成:
图解 Promise 实现原理(一)—— 基础实现
图解 Promise 实现原理(二)—— Promise 链式调用
图解 Promise 实现原理(三)—— Promise 原型方法实现
图解 Promise 实现原理(四)—— Promise 静态方法实现
本文适合对 Promise 的用法有所了解的人阅读,如果还不清楚,请自行查阅阮一峰老师的 《ES6入门 之 Promise 对象》。
Promise 规范有很多,如 Promise/A,Promise/B,Promise/D 以及 Promise/A 的升级版 Promise/A+,有兴趣的可以去了解下,最终 ES6 中采用了 Promise/A+ 规范。所以本文的Promise源码是按照Promise/A+规范来编写的(不想看英文版的移步Promise/A+规范中文翻译)。
引子
为了让大家更容易理解,我们从一个场景开始,一步一步跟着思路思考,会更容易看懂。
考虑下面一种获取用户 id 的请求处理:
//不使用Promise http.get('some_url', function (result) { //do something console.log(result.id);});//使用Promisenew Promise(function (resolve) { //异步请求 http.get('some_url', function (result) { resolve(result.id) })}).then(function (id) { //do something console.log(id);})
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
图解 Promise 实现原理(一)—— 基础实现
下载Word文档到电脑,方便收藏和打印~