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不能改变,而不是其成员内容不能改变