• 技术文章 >web前端 >js教程

    实现Promise的手把手教程

    coldplay.xixicoldplay.xixi2020-09-02 17:23:14转载539

    【相关学习推荐: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 一共分为三个状态:

    状态

    以上就是实现Promise的手把手教程的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除
    专题推荐:Promise
    上一篇:Controller层中Node怎么进行数据校验? 下一篇:设计一个JavaScript插件系统,重要无比
    线上培训班

    相关文章推荐

    • JS 的 Promise 和 Async 详解• Promise实践 实现微信小程序接口封装• JavaScript电池状态信息API之Promises• 弄懂promise、async、await

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网