🟡ES6Promise与异步函数

本文最后更新于:2022年4月8日 晚上

Promise(期约)

Promise

🍇建立Promise

Promise接收一个带(reslove,reject)的函数用来指定期约状态

状态转换在同级代码后执行,使用return可以直接退出

1
2
3
4
5
6
7
const promise = new Promise((reslove, reject) => {
if(/* 期约兑现 */)
reslove(result) // 传出结果
// 使用 return reslove(result)可以阻止继续执行
else /* 兑现失败 */
reject(error) // 传出错误对象
})

🍇期约完成处理

期约then可以接收两个可选回调函数处理不同状态

1
2
3
4
5
6
7
8
9
const promise = new Promise(...)

promise.then(
(result) => {
// 兑现执行
},
(error) => {
// 失败执行
})

🍇忽略resloved的三种写法

1
2
3
4
5
6
7
8
9
10
11
promise.then(null, error => {
// 失败执行
})

promise.then(undefined, error => {
// 失败执行
})

promise.catch(error => { // 错误对象总可以向后传递,推荐在最后用catch捕获ERROR
// 失败执行
})

🍇链式调用

then完成后返回一个新的Promise可以继续使用then

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const promise = new Promise(...)

promise.then(
(result) => {
// 兑现执行
},
(error) => {
// 失败执行
}).then(
(result) => {
// 兑现执行
},
(error) => {
// 失败执行
})
// ........

🍇返回Promise

finally

.finally()始终会执行且return 结果值

1
2
3
4
5
6
promise
.then((res) => {})
.catch((err) => {})
.finally(() => { // 期约状态不为padding即执行
console.log('This promise is over.')
})

all

Async(异步函数)


🟡ES6Promise与异步函数
https://qingshaner.com/ES6Promise/
作者
清山
发布于
2022年1月28日
许可协议