-
async是ES7中新增内容,对于异步操作的解决方案
-
async/await 让异步代码看起来、表现起来更像同步代码,必须等上一个await走完,下一个await才开始走,像同步的效果
1.asyac 的返回值,asyac 的返回是一个Promise对象,不过不同情况,返回的状态不一样
-
1.如果返回的是一个非 Promise 类型的数据, 则async 函数返回 promise 的状态 为 fulfilled 成功
-
-
2.如果返回的是一个 Promise对象,则 async 函数返回 promise 的状态由返回的Promise对象的状态决定
-
-
-
3.如果 throw Errow 抛出异常,则 async 函数返回 promise 的状态为 rejected 失败
-
2.await等同于promise.then的成功回调
-
这三种写法其实是一个意思
-
**3.**在async中有多个await,有一个报错了会怎么样
- 在async中有多个await,有一个报错了,会报错,然后下面的代码不会运行。通常我们会用try catch捕获错误,配合使用
- 这是写在最后的情况,会报错,但是前面的也正常运行了
- 这是写在前面的情况,会报错,然后下面的代码不会运行
- 通常我们会用try catch捕获错误,配合使用,,如果有reject状态,就不走下面的代码了,直接走catch,这样就不会控制台报错了,也能定位是什么错
4.在async中有多个promise,有一个报错了会怎么样
-
和 在async中有多个await,有一个报错了会怎么样的区别就是,没使用await语法
-
-
这样的话,也会报错,但是不会阻碍后面的diamante运行,也是会继续走的(我自己试过了使用try catch,好像没什么效果)