Promise的实现原理

promise

在完成符合Promis/A+规范之前,我们可以实现一个简易版Promise,因为在面试中,如果你能实现出一个简易版的Promise基本可以过关了

1.首先我们创建三个变量用于表示状态,对于经常使用的一些值都应该通过常量来管理,便于开发及后期维护。

2.在函数体内部首先创建了常量that,因为代码可能异步执行,用于获取正确的this对象

3.一开始Promise的状态应该是 pending

4.value变量用于保存resolve 以及 reject传入的值

5.resolvedCallbacks 和 rejectedCallbacks 用于保存then中的回调,因为当执行完Promise时,状态有可能还是pending,这时候应该把then中的回调保存起来用于改变状态

6.接下来呢我们完善resolve和reject函数。写在MyPromise函数体内部

直接上代码:

接下来实现then:

promise的要求:

1.一个Promise必须处在一个状态:pending、fulfilled 或 rejected

2.如果是pending状态,则promise:可以转换到fulfilled或rejected状态

3.如果是fulfilled状态则promise:不能转换成其他状态,必须有一个值,且这个值不能改变

4.如果是rejected状态则promise:不能转换成其他状态,必须有一个值,且这个值不能改变

值不能改变指的的是其identity不能改变,而不是其成员内容不能改变

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容