Promise实现原理(Promise/A+规范)
前言 Promise 对象用于表示一个异步操作的最终完成(或失败),及其结果值。它最早由社区提出和实现,其中有多种 Promise 规范。ES6 按照 Promise/A+ 规范将其写进了语言标准。 关于该规范的详情可参考:Promise/A+规范 中文翻译。 基础实现 我们先尝试实现最简单的 Promise 功能:通过 Promise 包装异步请求,并使用then方法注册回调函数,通过resolve方法通知 Promise 异步请求已解决,并执行回调函数。 模拟一个基础的异步 http 请求,并使用 Promise 封装: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 // 模拟http请求 const mockAjax = (url, s, callback) => { console.log("[mockAjax] start"); setTimeout(() => { console.log("[mockAjax] callback"); callback("异步结果:" + url + "异步请求耗时" + s + "秒"); }, 1000 * s); }; // Promise基础功能 new Promise((resolve) => { mockAjax("getUserId", 1, function (result) { resolve(result); }); }) ....