微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

promise基础原理

Promise/A+规范

  1. 三种状态 pending || fullfiled(resolved) || rejected
  2. 当处于pending状态的时候,可以转移到fullfiled(resolved)或者rejected状态
  3. 当处于fullfiled(resolved)状态或者rejected状态的时候,就不可变
  • 必须有一个then异步执行方法,then接收2个参数并且必须返回一个promise:
  1. onFullfiled 用来接收promise成功的值
  2. onRejected 用语接收promise失败的原因
  3. 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] 举报,一经查实,本站将立刻删除。

相关推荐