2.10JavaScript引用类型之期约(Promise)

1.Thenable接口

//then实例方法签名
then(onFulfilled, onRejected)

2.Promise类

Promise 类实现了 Thenable 接口。

//静态方法
Promise.all()
Promise.allSettled()
Promise.any()
Promise.reject()
Promise.resolve()
Promise.race()
Promise.try()
Promise.withResolvers()
//实例方法
Promise.prototype.then()
Promise.prototype.catch()
Promise.prototype.finally()

3.创建Promise对象

const p = new Promise(executor);
//executor回调函数签名
(resolve, reject) => {}
//resolve和reject回调函数签名
//value和reason可以为任何JavaScript数据类型
resolve(value)
reject(reason)

4.Promise.prototype.then()实例方法

//then实例方法签名
then(onFulfilled)
then(onFulfilled, onRejected)
//onFulfilled和onRejected回调函数签名
onFulfilled(value)
onRejected(reason)

5.Promise对象状态

待定(pending)状态是 Promise 对象的初始状态。在待定状态下,Promise 对象可以落定(settled)为兑现(fulfilled)状态或拒绝(rejected)状态。

Promise 对象的状态不一定非要脱离待定状态从而落定为兑现或拒绝状态。但是如果 Promise 对象的状态一旦落定为兑现或拒绝状态,Promise 对象的状态就不再改变,不可从兑现或拒绝状态逆转为待定状态。

状态描述
pending(待定)表示异步操作尚未开始或正在执行中
fulfilled(兑现)表示异步操作成功
rejected(拒绝)表示异步操作失败
let p = new Promise((resolve, reject) => setTimeout(resolve, 1000));
setTimeout(console.log, 0, p);

//输出
Promise { <state>: "pending" }
let p = new Promise((resolve, reject) => resolve("success"));
setTimeout(console.log, 0, p);

//输出
Promise { <state>: "fulfilled", <value>: "success" }
let p = new Promise((resolve, reject) => reject("fail"));
setTimeout(console.log, 0, p);

//输出
Promise { <state>: "rejected", <reason>: "fail" }
//报错
Uncaught (in promise) fail

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/javascript/javascriptlang/21652.html

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2020年9月9日 22:52
下一篇 2020年9月11日 11:30

相关推荐

  • 1.7JavaScript语言的函数(Function)

    1.Function()函数方式 Function() 函数方式创建的函数定义存在安全性和性能问题,所以不推荐使用,不过此种创建函数定义的方式很好地诠释了函数声明、函数表达式、箭头函数表达式是 Function 类型的实例这个概念。 2.函数声明 注意:在同一个作用域,相同名称的函数可以重复声明,但后定义的会覆盖先定义…

  • 2.4JavaScript引用类型之类(Class)

    类是一种“特殊的函数”。 就像函数声明定义方式和函数表达式定义方式一样,类的定义方式也有两种:类声明定义方式和类表达式定义方式。 1.类声明 注意:在同一个作用域,类声明不可以重复定义,否则会报错。 2.类表达式 注意:在同一个作用域,类表达式不可以重复定义,否则会报错。 注意:命名类表达式的右侧依然是类表达式,不是类…

  • 1.10JavaScript语言的异常(Exception)语句

    1.throw 2.try-catch 3.try-finally 4.try-catch-finally

    JavaScript语言教程 2020年8月10日
    01.6K0

发表回复

登录后才能评论