首页 > 解决方案 > 如何延迟函数调用,直到它的回调在其他地方完成

问题描述

我正在使用child_process将命令写入控制台,然后订阅'data'事件以从中获取输出。问题是有时输出会相互合并。

let command = spawn('vlc', { shell: true });

writeCommand(cmd, callback) {
  process.stdin.write(`${cmd}\n`);
  this.isBusy = true;
  this.process.stdout.on('data', (d) => {
    callback(d);
  });
}

函数writeCommand在多个地方使用,我怎样才能延迟它的执行,直到上一个命令的输出完成?

我的输出可能看起来像(status例如命令):

(音量:230)(状态停止)>

标签: javascriptnode.jschild-process

解决方案


您可以使用排队机制在第一个命令完成后执行下一个命令。你也可以使用像https://www.npmjs.com/package/p-limit这样的库来为你做这件事。


推荐阅读