//test.txt
이 파일은 test.txt파일입니다.
//test1.txt
이 파일은 test1.txt파일입니다.
//test2.txt
이 파일은 test2.txt파일입니다.
//test3.txt
이 파일은 test3.txt파일입니다.
- 위의 파일들을 읽어서 출력하는 async, await을 사용한 함수는 다음과 같다.
const fs = require('fs');
const fs_promises = require('fs').promises;
const asyncFunction = async () => {
try {
const data = await fs_promises.readFile('./test.txt', 'utf8');
const data1 = await fs_promises.readFile('./test1.txt', 'utf8');
const data2 = await fs_promises.readFile('./test2.txt', 'utf8');
const data3 = await fs_promises.readFile('./test3.txt', 'utf8');
const allData2 = data + data1 + data2 + data3;
console.log(allData2);
console.log('이 문장은 async, await 다음에 쓰여있습니다.')
} catch(err1) {
console.log(err1);
}
};
asyncFunction();
- 위 함수를 반복문(for)를 사용해 다음과 같이 표현할 수 있다.
const fs = require('fs');
const fs_promises = require('fs').promises;
let fileList = ['test.txt', 'test1.txt', 'test2.txt', 'test3.txt'];
const asyncFunction = async () => {
try{
for (const [i, r] of fileList.entries()){
const data = await fs_promises.readFile(r, 'utf8');
console.log(data);
}
} catch(err1) {
console.error(err1);
}
};
asyncFunction();
- 또 다른 방법으로는 Promise.all을 사용해서 다음과 같이 쓸 수도 있다. 하지만 이 방법은 async함수들의 순서가 보장되지는 않는다.
const fs = require('fs');
const fs_promises = require('fs').promises;
let fileList = ['test.txt', 'test1.txt', 'test2.txt', 'test3.txt'];
const asyncFunction = async () => {
try{
await Promise.all(fileList.map(async (r) => {
const data = await fs_promises.readFile(r, 'utf8');
console.log(data);
}));
} catch(err1) {
console.error(err1);
}
};
asyncFunction();