- 🔻如何使用Promise?
- 💖API
- 💗Promise 构造函数
- 💗Promise.prototype.then 方法
- 💗Promise.prototype.catch 方法
- 💗Promise.resolve 方法
- 💗Promise.reject 方法
- 💗Promise.all 方法
- 💗Promise.race 方法
上一篇文章讲了👉🏻关于promise对象的理解和使用 本章节讲述关于一些promise_API的使用
🔻如何使用Promise? 💖API 💗Promise 构造函数Promise (excutor) {}
- executor 函数: 执行器函数
(resolve, reject) => {}
- resolve 函数: 内部定义成功时我们调用的函数 value => {}
- reject 函数: 内部定义失败时我们调用的函数 reason => {}
说明: executor 执行器函数
会在 Promise 对象创建时立即同步调用
,内部封装的异步操作在执行器中执行
let p = new Promise((resolve, reject) => {
// executor 会在 Promise 内部立即同步调用
console.log('111')
})
console.log('222')
在控制台会先打印出111,再打印出222,如下图:
💗Promise.prototype.then 方法(onResolved, onRejected) => {}
- onResolved 函数:
成功的回调函数
(value) => {} - onRejected 函数:
失败的回调函数
(reason) => {}
说明: 指定用于得到成功 value 的成功回调和用于得到失败 reason 的失败回调
返回一个新的 promise 对象
💗Promise.prototype.catch 方法(onRejected) => {}
- onRejected 函数:
失败的回调函数
(reason) => {}
说明: then()的语法糖, 相当于: then(undefined, onRejected)
💗Promise.resolve 方法(value) => {}
- value: 成功的数据或 promise 对象
说明: 返回一个成功/失败的 promise 对象
// 如果传入的参数为 非promise类型的对象(如字符串,数字,布尔值等等),则返回的结果为成功的promise对象
let p1 = Promise.resolve(520)
// 如果传入的参数为 promise对象,则参数的结果决定了 resolve 返回的结果
let p2 = Promise.resolve(new Promise((resolve, reject) => {
resolve('ok')
// reject('error')
}))
// console.log(p2)
// 返回成功的promise对象
// p2.catch(reason => {
// console.log(reason)
// })
💗Promise.reject 方法
(reason) => {}
- reason: 失败的原因
说明: 返回一个失败的 promise 对象
let p = Promise.reject(520)
let p2 = Promise.reject('xuxu')
let p3 = Promise.reject(new Promise((resolve, reject) => {
resolve(123)
}))
console.log(p)
console.log(p2)
console.log(p3)
无论传入的参数是什么,返回的结果都是失败的promise对象,打印结果如下:
💗Promise.all 方法(promises) => {}
- promises: 包含 n 个 promise 的数组
说明: 返回一个新的 promise, 只有所有的 promise 都成功才成功
,返回的结果值是一个数组,只要有一个失败了就直接失败
,如果有多个失败结果只会返回第一个失败的结果值
let p1 = new Promise((resolve, reject) => {
resolve('ok')
})
let p2 = new Promise((resolve, reject) => {
reject('error1')
})
let p3 = Promise.reject('err')
const result = Promise.all([p1, p2, p3])
console.log(result)
// 返回p2这个失败的结果值
💗Promise.race 方法
(promises) => {}
- promises: 包含 n 个 promise 的数组
说明: 返回一个新的 promise, 第一个完成的 promise 的结果状态
就是最终的结果状态(谁先改变了状态,谁就决定race方法返回的结果)
let p1 = new Promise((resolve, reject) => {
resolve('ok')
})
let p2 = new Promise((resolve, reject) => {
resolve('1')
})
let p3 = Promise.resolve('2')
const result = Promise.race([p1, p2, p3])
console.log(result)
//控制台打印结果: [[Prototype]]: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: "ok"
//如果在p1回调函数里加一个定时器,则p2先改变状态,返回的就是p2执行完的结果。
let p1 = new Promise((resolve, reject) => {
// 1s之后改变状态
setTimeout(() => {
resolve('ok')
}, 1000)
})
//控制台打印结果: [[Prototype]]: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: "1"
今天的分享就到这里啦 ✨
接下来的一篇文章讲讲👉🏻关于Promise的七大关键问题吧,期待大佬们的来访哦~~ 点赞💖收藏🤞关注🌹