定义
Promise 是异步编程的一种解决方案: 从语法上讲,promise是一个对象,从它可以获取异步操作的消息;从本意上讲,它是承诺,承诺它过一段时间会给你一个结果。
状态
- 在 pending 状态,promise 可以切换到 fulfilled 或 rejected。
- 在 fulfilled 状态,不能迁移到其它状态,必须有个不可变的 value。
- 在 rejected 状态,不能迁移到其它状态,必须有个不可变的 reason。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| function MyPromise(fn) { let self = this; self.value = null; self.error = null; self.onFulfilled = null; self.onRejected = null;
function resolve(value) { self.value = value; self.onFulfilled(self.value); }
function reject(error) { self.error = error; self.onRejected(self.error) } fn(resolve, reject); } MyPromise.prototype.then = function(onFulfilled, onRejected) { this.onFulfilled = onFulfilled; this.onRejected = onRejected; } module.exports = MyPromise
|