![](https://img-blog.csdnimg.cn/20210826203931459.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Promise源码解密
文章平均质量分 61
通过剖析Promise的源码,来更好的使用Promsie
YOLO大王
专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。
展开
-
Promise源码解密-catch/resolve/reject/race
catch - 特殊的then方法,只有onRejectd使用let t = new MyPromise(function (resolve, reject) { console.log(somedata); //此处的somedata未定义});t.catch(function (reason) { console.log('rejected'); console.log(reason);});let t = new MyPromise(function (reso原创 2021-01-18 15:29:54 · 10779 阅读 · 1 评论 -
Promise源码解密-then的链式调用
then的用法通过return 给下一个then传值,成功/失败的返回值,最后都是传到下一个then的成功会回调let t = new Promise((resolve, reject) => { console.log(a) // 执行console会报错,最终只会执行reject})t.then((res)=>{ return res},error=>{ return error}).then( (res) => { cons原创 2021-01-18 15:29:10 · 11029 阅读 · 1 评论 -
Promise源码解密-异步版
解决了啥在同步版本中,我们在执行器中编写异步代码的情况下,会导致先执行then,在执行异步的方法中的resolve或者reject。所以我们就需要将then中接收到的方法转移到执行器中的异步方法中执行。我们只需要将then接收到的方法,展示存起来,当调用到resolve/reject时,再执行then接收到的方法代码// 定义状态常量const STATUS_PENDING = 'pending'const STATUS_FULFILLED = 'fulfilled'const STATU原创 2021-01-18 15:28:23 · 6452 阅读 · 0 评论 -
Promise源码解密-同步版
实现代码// 定义状态常量const STATUS_PENDING = 'pending'const STATUS_FULFILLED = 'fulfilled'const STATUS_REJECTED = 'rejected'class MyPromise { // 接收一个 执行器 // new Promise的时候,执行器立即执行, // 执行的时候根据指定函数执行 // 并且程序报错的情况下 constructor(executor) {原创 2021-01-18 15:27:38 · 13479 阅读 · 3 评论 -
Promise源码解密-Promise A+标准
术语1. Promisepromise 是一个拥有 then 方法的 object 或 function ,其行为符合本规范2. thenable是一个定义了 then 方法的 object 或 function3. 值(value)指任何 JavaScript 的合法值(包括 undefined , thenable 和 promise);4. 异常(exception)通过throw抛出一个值5. 原因(reason)一个promise被拒绝的原因class Promise原创 2021-01-18 15:26:41 · 6041 阅读 · 6 评论