7.6 async
可以用关键字async配合await调用Promise,实现异步操作,但代码却和同步写法类似:
javascript
async function get(url) {
let resp = await fetch(url);
let result = await resp.json();
return result;
}使用async function可以定义一个异步函数,异步函数和Promise可以看作是等价的,在async function内部,用await调用另一个异步函数,写起来和同步代码没啥区别,但执行起来是异步的:
javascript
let resp = await fetch(url);自动实现了异步调用,它和下面的Promise代码等价:
javascript
let promise = fetch(url);
promise.then((resp) => {
// 拿到resp
});如果我们要实现catch()怎么办?用Promise的写法如下:
javascript
let promise = fetch(url);
promise.then((resp) => {
// 拿到resp
}).catch(e => {
// 出错了
});用await调用时,直接用传统的try { ... } catch:
javascript
async function get(url) {
try {
let resp = await fetch(url);
let result = await resp.json();
return result;
} catch (e) {
// 出错了
}
}用async定义异步函数,用await调用异步函数,写起来和同步代码差不多,但可读性大大提高。