Асинхронная работа с fs через async-await в NodeJS

Давайте теперь вместо then будем использовать альтернативный синтаксис async-await. В этом случае мы получим возможность обращаться с нашим асинхронным кодом также просто и удобно, как с синхронным.

Давайте сразу смотреть на примерах. Прочитаем текст файла и выведем его в консоль:

javascriptasync function func() {
  let data = await fs.promises.readFile('readme.txt', 'utf8');
  console.log(data);
}

func();

Добавим обработку ошибок:

javascriptasync function func() {
  try {
    let data = await fs.promises.readFile('readme.txt', 'utf8');
    console.log(data);
  } catch (err) {
    console.log('что-то пошло не так');
  }
}

func();

Прочитаем три файла, сольем их текст и выведем в консоль:

javascriptasync function func() {
  try {
    let data1 = await fs.promises.readFile('1.txt', 'utf8');
    let data2 = await fs.promises.readFile('2.txt', 'utf8');
    let data3 = await fs.promises.readFile('3.txt', 'utf8');
    
    console.log(data1 + data2 + data3);
  } catch (err) {
    console.log('что-то пошло не так');
  }
}

func();

Запишем текст трех файлов в новый файл:

javascriptasync function func() {
  try {
    let data1 = await fs.promises.readFile('1.txt', 'utf8');
    let data2 = await fs.promises.readFile('2.txt', 'utf8');
    let data3 = await fs.promises.readFile('3.txt', 'utf8');
    
    await fs.promises.writeFile('res.txt', data1 + data2 + data3);
  } catch (err) {
    console.log('что-то пошло не так');
  }
}

func();

Пусть имена наших файлов записаны в массиве. Давайте прочитаем данные наших файлов в цикле, а затем запишем их в новый файл:

javascriptasync function func() {
  try {
    let names = ['1.txt', '2.txt', '3.txt'];
    let data  = [];
    
    for (let name of names) {
      data.push(await fs.promises.readFile(name, 'utf8'));
    }
    
    await fs.promises.writeFile('res.txt', data.join(''));
  } catch (err) {
    console.log('что-то пошло не так');
  }
}

func();
Задание 1

Даны два файла с числами. Найдите сумму этих чисел и запишите результат в третий файл.

Задание 2

Дан массив имен файлов. Переберите этот массив циклом и создайте файлы с этими именами, записав при создании в каждый файл случайное число. После этого в цикле прочитайте содержимое всех файлов и найдите сумму их чисел. Запишите ее в новый файл.