likes
comments
collection
share

用不一样的方式纯手工打造你的Promise

作者站长头像
站长
· 阅读数 42

一些看法💭

Promise的重要性不言而喻,那么现在让你自己实现一个Promise你会吗?也许有人会说,直接用就好了为什么要多此一举去手写一个Promise。

我是这么看的,写过Promise的人都知道,如果想一次性的写出一个比较完善的Promise不是太可能很(对于我来说🙋🏻)

手写Promise不是单单写,而是去学习如何手写,如何从零一步步的完善自己的Promise,我认为这个才是我们学习Promise比较重要的

行动🏃🏻

依据这个目标,我脑海中就想到一个以测试的方式去推动我们的代码(TDD?🤔)那么如何操作呢?

  • 参考PromiseA+规范

  • 主要以原生Promise输出写测试案例

  • 确保测试案例的渐进性

  • 通关的方式去完成Promise

     > 测试代码下方Github链接自行获取🌟
    

实操方法🧑🏻‍💻

P.S:打造自己的Promise,应该对Promise的概念以及运行规则了解 ⚠️

打开Test.js文件

这里通过Test(关卡一)举例

用不一样的方式纯手工打造你的Promise

  • 验证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以及完成了!


实操🤸🏻‍♂️

  1. 查看Test(关卡一):清楚的看到是让我们去完成一个基础的Promise(resolve, reject)的逻辑

    用不一样的方式纯手工打造你的Promise

    一顿狂写...(🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻)

    用不一样的方式纯手工打造你的Promise

  2. 查看Test(关卡二):基础的then方法搭建

    用不一样的方式纯手工打造你的Promise

    然后再看看具体的Test代码,比较简单~

    用不一样的方式纯手工打造你的Promise

    一顿狂写...(🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍💻🧑🏻‍

    用不一样的方式纯手工打造你的Promise

     接下来的方法就是一样的了,以测试通过为主去想办法通过!
    

项目地址🌟

github.com/Agility6/de…