javascript - 对如何在node.js中实现异步回调感到困惑

标签 javascript node.js asynchronous

ytdl(url, { filter: function(format) { return format.container === 'mp4'; } })
    .pipe(fs.createWriteStream('./songs/Battle-Scars.mp4'));

我是node.js新手,正在尝试实现一个youtube-mp3转换器,但我不知道如何使以下代码仅在上面的代码完成运行后运行。

var proc = new ffmpeg({ source: './songs/Battle-Scars.mp4'})
    .withAudioCodec('libmp3lame')
    .toFormat('mp3')
    .saveToFile('./songs/Battle-Scars.mp3', function(stdout, stderr) {
        console.log('file has been converted succesfully');
    });

提前感谢所有的帮助和感谢。

最佳答案

由于您正在使用流,因此您可能需要查看 finish event一旦写入流完成写入磁盘,您就可以触发它。

尝试如下:

var writeStream = fs.createWriteStream('./songs/Battle-Scars.mp4');

// Set up event listener
writeStream.on('finish', function () {
  var proc = new ffmpeg({ source: './songs/Battle-Scars.mp4'})
    .withAudioCodec('libmp3lame')
    .toFormat('mp3')
    .saveToFile('./songs/Battle-Scars.mp3', function(stdout, stderr) {
      console.log('file has been converted succesfully');
    });
});

ytdl(url, { filter: function(format) { return format.container === 'mp4'; } })
.pipe(writeStream);

关于javascript - 对如何在node.js中实现异步回调感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562798/

相关文章:

node.js - Promise 同步方法

java - AsyncTask 图像 getter

javascript - 使用 this 和 prototype 在 JavaScript 中定义类的方法有什么区别?

javascript - 如何在 Javascript 中为 if 语句添加公差

javascript - Spring Rest 服务中的 Angular File Saver

javascript - 多个 session 多次登录,无需任何商店

javascript - Node promise 不会将连续的嵌套响应推送到数组

javascript - 如何在调用 response.end() 后执行 Node JS/connect 中间件?

javascript - Firebase 身份验证在 Safari 中不起作用

javascript - 在从 API 接收值之前调用 React 状态