update: promise

This commit is contained in:
qianguyihao 2021-05-01 20:13:46 +08:00
parent 177bcb3f1b
commit d16a6f132f

View File

@ -82,7 +82,7 @@ Promise 对象, 可以**用同步的表现形式来书写异步代码**(也就
- 可以很好地解决**回调地狱**的问题避免了层层嵌套的回调函数 - 可以很好地解决**回调地狱**的问题避免了层层嵌套的回调函数
- 语法非常简洁可读性强Promise 对象提供了简洁的 API使得控制异步操作更加容易 - 语法非常简洁可读性强便于后期维护Promise 对象提供了简洁的 API使得控制异步操作更加容易
## Promise 基础 ## Promise 基础
@ -210,7 +210,9 @@ try {
} }
``` ```
需要注意的是上面的写法 3 是错误的运行之后控制台会报如下错误 需要注意的是
1上面的写法 3 是错误的运行之后控制台会报如下错误
![](http://img.smyhvae.com/20210430_1553.png) ![](http://img.smyhvae.com/20210430_1553.png)
@ -220,6 +222,10 @@ try-catch 主要用于捕获异常,注意,这里的异常是指**同步**函
原因是当异步函数抛出异常时对于宏任务而言执行函数时已经将该函数推入栈此时并不在 try-catch 所在的栈所以 try-catch 并不能捕获到错误对于微任务而言比如 promisepromise 的构造函数的异常只能被自带的 reject 也就是.catch 函数捕获到 原因是当异步函数抛出异常时对于宏任务而言执行函数时已经将该函数推入栈此时并不在 try-catch 所在的栈所以 try-catch 并不能捕获到错误对于微任务而言比如 promisepromise 的构造函数的异常只能被自带的 reject 也就是.catch 函数捕获到
2写法1中`promiseA().then().catch()``promiseA().catch().then()`区别在于前者可以捕获到 `then` 里面的异常后者不可以
### 小结 ### 小结
1promise 有三种状态等待中成功失败等待中状态可以更改为成功或失败已经更改过状态后法继续更改例如从失败改为成功 1promise 有三种状态等待中成功失败等待中状态可以更改为成功或失败已经更改过状态后法继续更改例如从失败改为成功
@ -230,6 +236,17 @@ try-catch 主要用于捕获异常,注意,这里的异常是指**同步**函
4失败的 promise后续可以通过 promise 自带的 .catch 法或是 .then 法的第个参数进捕获 4失败的 promise后续可以通过 promise 自带的 .catch 法或是 .then 法的第个参数进捕获
## Promise 规范
### Promise 规范解读
Promise 个拥有 then 法的对象或函数任何符合 promise 规范的对象或函数都可以成为 Promise
关于promise 规范的详细解读可以看下面这个链接
- Promises/A+ 规范<https://promisesaplus.com/>
## promise 对象的 3 个状态 ## promise 对象的 3 个状态
- 初始化等待中pending - 初始化等待中pending
@ -321,7 +338,7 @@ fun1(function () {
}); });
``` ```
的例就是最传统的写法在异步结束后通过传入回函数的方式执函数 的例就是最传统的写法在异步结束后通过传入回函数的方式执函数
学习 Promise 之后我们可以将这个异步函数封装为 Promise如下 学习 Promise 之后我们可以将这个异步函数封装为 Promise如下
@ -334,14 +351,15 @@ function fun2() {
}); });
} }
// 上面的 fun2 也可以写成: /* fun2
// function fun2() { function fun2() {
// return new Promise((resolve) => { return new Promise((resolve) => {
// setTimeout(() => { setTimeout(() => {
// resolve(); resolve();
// }, 1000); }, 1000);
// }); });
// } }
*/
// 先执行异步函数fun1再执行回调函数 // 先执行异步函数fun1再执行回调函数
fun2().then(() => { fun2().then(() => {
@ -429,7 +447,7 @@ request1()
## 总结 ## 总结
了解这些内容之后 你已经对 Promise 有了基本了解下一篇文章我们来讲一讲 Promise的常见用法 了解这些内容之后 你已经对 Promise 有了基本了解下一篇文章我们来讲一讲 Promise在实战开发的常见用法
## 参考链接 ## 参考链接