Promise从入门到拿Offer之手写Promise

Chase620
• 阅读 1923

1、Promise构造函数的实现

Promise构造函数用来声明示例对象,需要传入一个执行器函数。其中包括resolve函数和reject函数,以及几个重要的属性:状态属性、结果属性和回调函数队列。

Promise从入门到拿Offer之手写Promise

构造函数的基本框架

resolve函数用于异步处理成功后调用的函数。其中包括验证对象状态修改次数,修改promise实例对象状态,异步调用成功的回调函数onResolved。

Promise从入门到拿Offer之手写Promise

resolve函数

reject函数用于异步处理失败后调用的函数。其中包括验证对象状态修改次数,修改promise实例对象状态,异步调用成功的回调函数onRejected。

Promise从入门到拿Offer之手写Promise

reject函数

2、Promise的then函数和catch函数实现

then函数用于为promise指定成功/失败的回调函数,返回值是一个新的promise对象。

Promise从入门到拿Offer之手写Promise

then函数的基本框架

如果 onResolved/onRejected 不是函数, 可它指定一个默认的函数。若onResolved不是函数,则指定返回的 promise 为一个成功状态, 结果值为 value;若onRejected不是函数,指定返回的 promise 为一个失败状态, 结果值为 reason。否则返回一个新的promise对象。

Promise从入门到拿Offer之手写Promise

否则返回一个新的promise对象。

Promise从入门到拿Offer之手写Promise

用于处理promise成功/失败结果的函数。

Promise从入门到拿Offer之手写Promise

Promise从入门到拿Offer之手写Promise

catch函数用于指定失败的回调函数,是then(null, onRejected)的语法糖。

Promise从入门到拿Offer之手写Promise

catch函数

3、Promise的resolve函数和reject函数实现

Promise从入门到拿Offer之手写Promise

resolve函数

Promise从入门到拿Offer之手写Promise

reject函数

4、Promise的all函数和race函数实现

Promise从入门到拿Offer之手写Promise

all函数

Promise从入门到拿Offer之手写Promise

race函数

本文转自 https://www.jianshu.com/p/c202658b8d59,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
晴空闲云 晴空闲云
2年前
JavaScript中MutationObServer监听DOM元素详解
DOM的MutationObServer接口,可以在DOM被修改时异步执行回调函数,我的理解就是可以监听DOM修改。基本使用可以通过MutationObserver构造函数实例化,参数是一个回调函数。jsletobservernewMutationObserver(()console.log("change"));console.log(obs
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Javascript 中的神器——Promise
_摘要:_ 回调函数真正的问题在于他剥夺了我们使用return和throw这些关键字的能力。而Promise很好地解决了这一切回调函数真正的问题在于他剥夺了我们使用return和throw这些关键字的能力。而Promise很好地解决了这一切Promise概念所谓Promise,就是ES6原生提供的一个
Stella981 Stella981
3年前
JS 对象数组Array 根据对象object key的值排序sort,很风骚哦
有个js对象数组varary\{id:1,name:"b"},{id:2,name:"b"}\需求是根据name或者id的值来排序,这里有个风骚的函数函数定义:function keysrt(key,desc) {  return function(a,b){    return desc ? ~~(ak
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Stella981 Stella981
3年前
JavaScript回调函数的高手指南
摘要:本文将会解释回调函数的概念,同时帮你区分两种回调:同步和异步。回调函数是每个前端程序员都应该知道的概念之一。回调可用于数组、计时器函数、promise、事件处理中。本文将会解释回调函数的概念,同时帮你区分两种回调:同步和异步。1.回调函数首先写一个向人打招呼的函数。只需要创建一个接受name参数的函数gree
Stella981 Stella981
3年前
ES6 Promise 对象扯谈
newPromise(/executor/function(resolve,reject){...});Promise的构造函数接收一个函数作为参数,函数里面传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。其实这里用“成功”和“失败”来描述并不准确,按照标准来
小万哥 小万哥
6个月前
C++ 构造函数实战指南:默认构造、带参数构造、拷贝构造与移动构造
C构造函数构造函数是C中一种特殊的成员函数,当创建类对象时自动调用。它用于初始化对象的状态,例如为属性分配初始值。构造函数与类同名,且没有返回值类型。构造函数类型C支持多种类型的构造函数,用于满足不同的初始化需求:默认构造函数:不带参数的构造函