Promise/A+规范
- 三种状态 pending || fullfiled(resolved) || rejected
- 当处于pending状态的时候,可以转移到fullfiled(resolved)或者rejected状态
- 当处于fullfiled(resolved)状态或者rejected状态的时候,就不可变
- onFullfiled 用来接收promise成功的值
- onRejected 用语接收promise失败的原因
- promise.prototype.then = function(onFullfiled,onRejected){}
我的实现
function myPromise(constructor) { let self = this; self.status = 'pending'; self.value = undefined; self.reason = undefined; function resolve(value) { if (self.status === 'pending') { self.value = value; self.status = 'resolved' } } function reject(reason) { if (self.status === 'pending') { self.reason = reason; self.status = 'rejected' } } try { constructor(resolve, reject) } catch (e) { reject(e) } } myPromise.prototype.then = function(onFullfiled, onRejected) { let self = this; switch (self.status) { case 'resolved': onFullfiled(self.value) break; case 'rejected': onRejected(self.reason) break; default: } } var p = new myPromise((resolve, reject) => { resolve(1) }) p.then((x) => { console.log(x) })
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。