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