【相关学习推荐: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的手把手教程的详细内容。