async await捕捉错误
时间: 2023-10-15 19:24:42 浏览: 94
在使用async/await时,有几种方式可以捕捉错误。第一种方式是使用try...catch语句,在异步函数中使用try{}catch{}来捕捉错误。例如:
```javascript
async function get() {
try {
let {name,sex} = await func();
// 正确的处理逻辑
} catch(err) {
// 错误处理逻辑
}
}
```
第二种方式是使用catch方法。这种方式可以将错误和正确返回值进行区分。但是每次使用await时需要写很长一段冗余的代码,因此可以考虑将其封装成一个工具函数,例如:
```javascript
function awaitWraper(promise) {
return promise.then((res) => [null, res])
.catch((err) => [err, null]);
}
window.onload = async () => {
let res = await awaitWraper(getData(3));
console.log(res); // ["getdata error", null]
}
```
另外,在ES7推出的async/await中,还可以使用Promise的reject方法来捕捉错误。例如:
```javascript
function func(data) {
return new Promise((resolve, reject) => {
data ? resolve(data) : reject({ msg: "Promise失败的", data });
});
}
```
以上就是一些使用async/await捕捉错误的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [async/await错误捕获](https://blog.csdn.net/qq_39970857/article/details/116979564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [async/await 的错误捕获](https://blog.csdn.net/Amnesiac666/article/details/123104855)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文