Как получить код на основе генератора событий для ожидания в nodejs? - PullRequest
0 голосов
/ 25 февраля 2019

Возможно, я задаю вопрос неправильно, потому что у меня нет большого опыта с этим.В основном, у меня есть этот код:

videoshow(images, videoOptions)
  .audio('song.mp3')
  .save('video.mp4')
  .on('start', function (command) {
    console.log('ffmpeg process started:', command)
  })
  .on('error', function (err, stdout, stderr) {
    console.error('Error:', err)
    console.error('ffmpeg stderr:', stderr)
  })
  .on('end', function (output) {
    console.error('Video created in:', output)
  })

из этой библиотеки

Насколько я понимаю, она работает асинхронно, но я не могу заставить ее ждать дажекогда я добавляю await перед ним.

Я хочу, чтобы блок кода остановился, пока не закончится end и изображение не будет преобразовано в видео.Я не вижу примеров, и я не уверен, что делаю неправильно.

1 Ответ

0 голосов
/ 25 февраля 2019

Вы можете заключить это в обещание:

async function run() {
  return new Promise((resolve, reject) =>
    videoshow(images, videoOptions)
      .audio('song.mp3')
      .save('video.mp4')
      .on('start', function (command) {
        console.log('ffmpeg process started:', command)
      })
      .on('error', function (err, stdout, stderr) {
        console.error('Error:', err)
        console.error('ffmpeg stderr:', stderr)
        reject(err);
      })
      .on('end', function (output) {
        console.error('Video created in:', output)
        resolve(output);
      })
  )
}


(async () => {
  await run();
  // This is were you put your code
})();
...