Как выполнить функции синхронно?

Здравствуйте, помогите пожалуйста разобраться с нодежс. Я немного писал код на джаваскрипт, он там выполняется сверху вниз, все супер понятно. В ноде же с ассинхроннсотью какой-то иной мир. Я не могу до конца понять и разобраться, как мне выполнять действия в ноде постепенно, по порядку
допустим я делаю
let data = []
const fs = require('fs/promises');
fs.readFile('./data.txt', 'utf8', 
    async (error, d) => {
      if (error) throw error;
      data = await JSON.parse(d)

Либо работу с файлами я могу выполнять синхронно добавив Sync в конце
А как в ноде запускать функции синхронно, у меня есть функции которые работают с одним файлом, читают его, что-то записывают, удаляют. Если функции будут выполнятся все вместе, то я так понимаю у меня могут быть неточности в записи файла.
У меня была идея использовать промисс алл, но внутри промисс алл функции тоже выполняются ассинхронно
Вопрос в том, как мне запустить fnOne, fnTwo, дождатьcя когда они обе отработают, а затем запустить fnThree
Я честно гуглил, я даже посмотрел лекцию тимура шемсединова, но до меня именно этот момент не доходит
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
rqdkmndh
@rqdkmndh
Web-разработчик
Что мешает сделать так через обычный await?:
async function fnOne() {
  return new Promise(res=>setTimeout(()=>{res(1000)}, 1000))
}
async function fnTwo() {
  return new Promise(res=>setTimeout(()=>{res(2000)}, 1200))
}
async function fnThree() {
  return new Promise(res=>setTimeout(()=>{res(3000)}, 1400))
}

const allFn = async ()=>{
  try {
    await fnOne()
    console.log('Выполнилась 1-я ф-ция')
    const rz = await fnTwo()
    console.log('Выполнилась 2-я ф-ция, полученный результат = ', rz)
    await fnThree()
    console.log('Выполнилась 3-я ф-ция')
  }catch (e) {
    console.error(e)
  }
}

allFn()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы