async的await是怎么实现的
时间: 2023-12-10 14:33:16 浏览: 37
async/await是ES7中的新特性,它是基于Promise实现的。async函数返回一个Promise对象,可以使用then方法添加回调函数,当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。下面是async/await的实现方式:
1. async函数会返回一个Promise对象,可以使用then方法添加回调函数。
2. await关键字只能在async函数中使用,它会暂停async函数的执行,等待Promise对象的状态改变,然后继续执行async函数。
3. 如果await后面的Promise对象变为rejected状态,则会抛出一个错误,可以使用try...catch语句来捕获这个错误。
4. async函数内部可以使用多个await关键字,它们会按照顺序依次执行。
下面是一个使用async/await实现并发的例子:
```javascript
var fs = require('fs');
var read = function (path) {
return new Promise((resolve, reject) => {
fs.readFile(path, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
};
// 并发读取
async function readTwo() {
var p = Promise.all([read('./a.txt'), read('./b.txt')]);
var [f1, f2] = await p;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)