用不一样的方式纯手工打造你的Promise
一些看法💭
Promise的重要性不言而喻,那么现在让你自己实现一个Promise你会吗?也许有人会说,直接用就好了为什么要多此一举去手写一个Promise。
我是这么看的,写过Promise的人都知道,如果想一次性的写出一个比较完善的Promise不是太可能很(对于我来说🙋🏻)
手写Promise不是单单写,而是去学习如何手写,如何从零一步步的完善自己的Promise,我认为这个才是我们学习Promise比较重要的
行动🏃🏻
依据这个目标,我脑海中就想到一个以测试的方式去推动我们的代码(TDD?🤔)那么如何操作呢?
-
参考PromiseA+规范
-
主要以原生Promise输出写测试案例
-
确保测试案例的渐进性
-
通关的方式去完成Promise
> 测试代码下方Github链接自行获取🌟
实操方法🧑🏻💻
P.S:打造自己的Promise,应该对Promise的概念以及运行规则了解 ⚠️
打开Test.js
文件
这里通过Test(关卡一)举例
-
验证
p1
的状态,其实就是搭建一个最基本的Promise框架class [YouName]Promise { constructor() { this.value = undefined this.reason = undefined this.state = 'Pending' } }
> ⚠️ 我们只需要确保当前Test通过即可
-
逐步完善我们的Promise就可以了👌🏻
发现困难😣
当我们发现这个Test通过不了或者没有思路了,不要着急我们可以打开x.Promise.js
文件,查看当前Test是如何编写才能通过
> ⚠️ 仅仅是让Test通过,并不是最后的代码!
通关🎆
在完成所以的Test说明我们的Promise以及完成了!
实操🤸🏻♂️
-
查看Test(关卡一):清楚的看到是让我们去完成一个基础的Promise(resolve, reject)的逻辑
一顿狂写...(🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻)
-
查看Test(关卡二):基础的then方法搭建
然后再看看具体的Test代码,比较简单~
一顿狂写...(🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻💻🧑🏻
接下来的方法就是一样的了,以测试通过为主去想办法通过!
项目地址🌟
转载自:https://juejin.cn/post/7158165301522071560