美文网首页
一瓶肥宅水的时间,上手promise原理(1)

一瓶肥宅水的时间,上手promise原理(1)

作者: 前端小帅 | 来源:发表于2020-06-18 10:32 被阅读0次

一瓶肥宅水的时间,上手promise原理(1)

随着ES6的标准出现,promise就成为了处理异步操作的新宠,越来越多的前端工程师选择用promise来处理异步,解决回调地狱的方案。今天就来聊一聊promise的原理,自己手写实现promise。

1、我们可以确定的是promise是一个对象的形式被new出来。

class Promise {}

2、我们要知道,在promise中有三种状态,分别为pending、fulfilled、rejected,代表等待,成功,失败。

class Promise {
    static PENDING = 'pending';
    static FULFILLED = 'fulfilled';
    static REJECTED = 'rejected';
}

3、我们知道在new promise的时候 ,会在初始化时设置初始status,返回值,传入参数,这个参数是一个function,这个参数接受resolve,reject两个方法作为参数。

class Promise {
    static PENDING = 'pending';
    static FULFILLED = 'fulfilled';
    static REJECTED = 'rejected';
    constructor(executor){
        this.status = promise.PENDING;
        this.value = null;
       executor(this.resolve.bind(this),this.reject.bind(this))
    }
    resolve(value){
        this.status = Promise.FUFILLED;
        this.value=value;
    }
    reject(reason){
        this.status=Promise.REJECTED;
        this.value=reason
    }
}

4、因为在promise中,状态是不可逆的,所以resolve和rejected需要添加判断,只有在状态为pending的情况才会去处理

resolve(value){
    if(this.status ==Promise.PENDING){
        this.status = Promise.FUFILLED;
        this.value=value;
    }
}
reject(reason){
    if(this.status == Promise.PENDING){
        this.status=Promise.REJECTED;
        this.value=reason
    }
}

5、有种情况,在你初始化调用executor的时候,去console.log(不存在的值),会报错,我们应该j进行try...catch,将报错信息交给rejected来处理

try {
   executor(this.resolve.bind(this), this.reject.bind(this));
 } catch (error) {
   this.reject(error);
 }

然后测试一下最基本的promise代码实现

<script src="HD.js"></script>
<script>
  let p = new Promise((resolve, reject) => {
    resolve("Hello world");
  });
  console.log(p);
</script>

相关文章

  • 一瓶肥宅水的时间,上手promise原理(1)

    一瓶肥宅水的时间,上手promise原理(1) 随着ES6的标准出现,promise就成为了处理异步操作的新宠,越...

  • 你一定不知道所谓健康食品的残酷真相!

    1 2 3 4 5 6 7 8 9 看得我都相信了,马上打开了一瓶肥宅快乐水!

  • 一包12块的进口锅巴

    今天照常的去宿舍楼下取外卖,多醋多辣。想着去超市买一瓶肥宅水犒劳下自己,拿完肥宅水想着来都来了又往零食区域多了几步...

  • 南宁“肥宅”千千万,你是哪一种?

    前段时间大家都在说“肥宅快乐”,可乐是肥宅快乐水,披萨是肥宅快乐饼,全家桶是肥宅快乐桶…… 如果你不能理解这些快乐...

  • 肥宅快乐水(1)

    今天开始写新的篇章。 时至今日,感悟最深的是任何知识的学习到最后,都是有用的,关键在于你能不能在某一件事情上,坚持...

  • 肥宅水

    喝喝喝

  • 你想活出怎样的人生3

    3 快乐水 我真的很想快乐起来。 听说可乐还有一个别称——肥宅快乐水。于是,在我无精打采的今天早上,买了一瓶回来。...

  • 快乐肥宅水

    燥热的盛夏 冰镇的可乐 伴着蝉鸣 夺望稀星 指点乌黑夜空 手指间笔画的 恰好 是炎夏晌晚的 苦思冥想啊 而心田的冰...

  • 肥宅快乐水

  • 肥宅快乐水

    都怪阿芬啊!我一直在劝他,她说戒不掉,我为了证明能戒掉就喝了,快来水真的好难戒啊!

网友评论

      本文标题:一瓶肥宅水的时间,上手promise原理(1)

      本文链接:https://www.haomeiwen.com/subject/xxgyxktx.html