实现Promise的手把手教程


本文摘自PHP中文网,作者coldplay.xixi,侵删。

【相关学习推荐: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

1

2

3

4

5

6

7

8

9

class Deferred {  constructor(callback) {    const resolve = () => {      // TODO

    }    const reject = () => {      // TODO

    }    try {

      callback(resolve, reject)

    } catch (error) {

      reject(error)

    }

  }

}复制代码

构造函数接受一个 callback,调用 callback 的时候需传入 resolve、reject 两个方法。

Promise 的状态

Promise 一共分为三个状态:

状态

以上就是实现Promise的手把手教程的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

promise是什么意思

深入浅析 promise 比 settimeout() 快的原因

es6之promise的学习

需要真正明白的promise

理解js原型链,继承和promis

es6-promise源码的分析

promise原理

如何将 javascript 回调转换为 promise?方法介绍

实现promise的手把手教程

更多相关阅读请进入《promise》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...