async/await是ES8引入的新语法,用来简化Promise异步操作。在async/await出现之前,开发者只能通过链式.then()的方式处理Promise异步操作。
.then链式调用解决了回调地狱的问题,但是代码冗余、阅读性差、不易理解。
async/await的基本使用
- 如果一个方法的返回值是Promise实例对象,那么可以在这个方法前面用await进行修饰, 修饰完之后,这个返回值就不再是Promise实例了,而是一个值。需要注意的是如果这个方法内部用到了await,那么这个方法必须用await进行修饰。
import thenFs from then-fs async function getAllFile() { const r1 = await thenFs.readFile('./file/1.txt','utf8') console.log(r1)
const r2 = await thenFs.readFile('./file/2.txt','utf8')
console.log(r2)
const r3 = await thenFs.readFile('./file/3.txt','utf8')
console.log(r3)
}
getAllFile()
async和await使用注意事项:
- 如果function中使用了await,则function必须被async修饰
- 在async方法中, 第一个await之前的代码会同步执行,await之后的代码会异步执行