困惑于如何在node.js中实现asynchronouscallback

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

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

由于您正在使用stream,因此您可能需要查看一次写入stream完成写入磁盘后可以触发的结束事件 。

尝试像这样:

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