execFileSync异步运行

时间:2017-02-15 09:39:37

标签: javascript node.js synchronization

我们有一个奇怪的问题,对于一些开发人员来说,node.js execFileSync函数是异步运行的,而 NOT 是以它应该的方式同步运行的。我们认为这是由于有问题的机器和没有问题的机器之间的某些环境差异造成的,但是我们无法找到原因。 以前有没有人经历过这个?

这是一个简单的例子。我们对这个代码块进行了多次调用,因为我们需要调用一些外部脚本来在运行之间执行一些清理,但是在有问题的机器上,代码不会等待脚本完成并返回,然后继续执行脚本最终一次运行多次,而不是连续运行。

execFileSync(batchPath, {stdio:[0,1,2]}, function(error, stderr, stdout) {
       console.log(stderr);
       console.log(stdout);
       if (error !== null) {
           console.log('exec error: ', error);
       }
    });

感谢您对可能导致此问题的任何想法。

1 个答案:

答案 0 :(得分:0)

请参阅文档以正确调用execFileSync

参数是3:

  1. 命令(字符串)
  2. 命令参数列表(数组)
  3. options(object)
  4. 你正在传递:

    1. command(string)
    2. options(object)
    3. 回调(功能)
    4. 了解应如何调用execFileSync并考虑您要做什么。

      如何调用同步(阻塞)函数来运行外部程序(根据定义,只有在该程序完成后才允许您执行任何其他操作)并且您希望在程序运行时与该程序通信(从在外部程序运行时被阻止的进程。)