如何获取基于事件发射器的代码以在nodejs中等待?

时间:2019-02-25 01:31:41

标签: javascript node.js ffmpeg dom-events

我可能会问错这个问题,因为我对此没有很多经验。基本上,我有以下代码:

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)
  })

来自this library

据我了解,它运行异步,但是即使我在其上添加了await,也无法使其等待。

我希望在end完成并将图像转换为视频之前停止代码块。我没有看到任何示例,也不确定自己做错了什么。

1 个答案:

答案 0 :(得分:2)

您可以将其包装在诺言中:

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
})();