async和await
学习路径
什么是 async/await
async/await 的基本使用
async/await 的使用注意事项
什么是 async/await
在async/await
出现之前,开发者只能通过链式 .then()
的方式处理 Promise 异步操作
.then 链式调用的优点:
解决了回调地狱的问题
.then 链式调用的缺点:
代码冗余、阅读性差、不易理解
async/await 是 ES8(ECMAScript 2017)引入的新语法,用来简化 Promise 异步操作
async/await 的基本使用
使用async/await
可以获取then
回调函数里面的返回数据
使用 async/await
简化 Promise 异步操作的示例代码如下
const fs = require('fs')
function getfile(filePath) {
return new Promise((resolve, reject) => {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
reject(err)
} else {
resolve(data)
}
})
})
}
//async 标记当前的方法时异步方法
async function fr() {
try { //尝试执行的代码 如果没有错误 就执行完try结构中的代码块
let res = await getfile('./data/a.txt')
console.log(res);
} catch (err) { //如果有错就跳转到catch 结构中 执行代码块
console.log(err);
}
}
fr()
async:代表异步
await:代表等待,表示需要等待后面的异步方法执行完毕之后再执行后续的代码
async/await 的使用注意事项
- 如果在 function 中使用了 await,则 function 必须被 async 修饰
- 在 async 方法中,第一个 await 之前的代码会同步执行,await 之后的代码会异步执行
- 在使用async和await的时候,异常的处理通常会添加异常处理结构