在上一节中我们介绍了NodeJS基础的异步回调实现方法,实现了异步的递归函数摆脱了‘回调地狱’。最后引入了Promise 特性将异步回调实现地更加优雅。
然而基于Promise的链式调用方法目前看似只能实现硬编码。基于上一节的问题,我们有一个文件列表,需要顺次读取其中的内容并打印。在这里我们引入es7的 Async 和 Await 关键字。
先实现一个简单的例子,在暂停5秒后在控制台输出end
const sleep = (time) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, time);
})
};
const start = async () => {
console.log('start');
await sleep(5000);
console.log('end');
};
start();
在这里 await 关键字必须修饰 Promise对象,且必须在async 修饰的函数内。这里体现了外异步,内同步的思想。即start函数整体是异步的,但其函数内部的过程是顺序进行的,即内同步。
基于上一节的问题,我们有一个文件列表,需要顺次读取其中的内容并打印。在这里用 async 和 await 来实现
import fs from 'fs';
let fsList =['/a.txt','/b.txt','/c.txt','/d.txt','/e.txt'];
co