实现Promise的手把手教程
程序员文章站
2022-03-04 22:24:25
...
【相关学习推荐:javascript视频教程】
前言
很多 JavaScript 的初学者都曾感受过被回调地狱支配的恐惧,直至掌握了 Promise 语法才算解脱。虽然很多语言都早已内置了 Promise ,但是 JavaScript 中真正将其发扬光大的还是 jQuery 1.5 对 $.ajax
的重构,支持了 Promise,而且用法也和 jQuery 推崇的链式调用不谋而合。后来 ES6 出世,大家才开始进入全民 Promise 的时代,再后来 ES8 又引入了 async 语法,让 JavaScript 的异步写法更加优雅。
今天我们就一步一步来实现一个 Promise,如果你还没有用过 Promise,建议先熟悉一下 Promise 语法再来阅读本文。
构造函数
在已有的
Promise/A+
规范中并没有规定 promise 对象从何而来,在 jQuery 中通过调用 $.Deferred()
得到 promise 对象,ES6 中通过实例化 Promise 类得到 promise 对象。这里我们使用 ES 的语法,构造一个类,通过实例化的方式返回 promise 对象,由于 Promise 已经存在,我们暂时给这个类取名为 Deferred
。
class Deferred { constructor(callback) { const resolve = () => { // TODO } const reject = () => { // TODO } try { callback(resolve, reject) } catch (error) { reject(error) } } }复制代码
构造函数接受一个 callback,调用 callback 的时候需传入 resolve、reject 两个方法。
Promise 的状态
Promise 一共分为三个状态:
- ⏳
pending
:等待中,这是 Promise 的初始状态;
以上就是实现Promise的手把手教程的详细内容,更多请关注其它相关文章!
推荐阅读
-
用php实现动态产生xml文件以及从xml文件中抽取数据转化成html的小程序_PHP教程
-
php实现字符串反转输出的方法_PHP教程
-
PHP实现通过中文字符比率来判断垃圾评论的方法,_PHP教程
-
C++ 手把手教你实现可变长的数组
-
php+ajax实现无刷新数据分页的办法,ajax分页_PHP教程
-
php 数组动态添加实现代码(最土团购系统的价格排序),数组团购_PHP教程
-
JavaScript的ES3,ES5,ES6三种实现继承方式的教程
-
PHP跳转代码的实现方法讲解_PHP教程
-
PHP4 Session实现的迷你购物篮五_PHP教程
-
在Python的框架中为MySQL实现restful接口的教程