【问题标题】:Parent/Child process or run npm task from js file父/子进程或从 js 文件运行 npm 任务
【发布时间】:2020-09-02 17:04:03
【问题描述】:

我对@9​​87654323@ 有点陌生,需要进一步澄清。

我的情况

我正在寻找将一个js 文件作为与另一个js 文件分开/隔离的进程来运行/触发的方法。不直接使用requireimport as,而是将某个参数(在我的情况下为数字)从父进程传递给子进程。

父.js

async function parent () {

    /** logic */

    /** run/start child.js script with certain (1) argument from logic above /

    /** if logic below fails, it won't crash/trigger child, and his job will be finished separately outside async function*/
}

child.js

async function child(number) {
    /** receive argument from parent.js and execute separately*/
}

只是为了确定,架构:

    MAIN THREAD 
        |
        |
      run child => CHILD THREAD (receive number arg from main thread)
        |               |
        x               | (don't care about error in main thread)
     (error)            |
  END OF M_THREAD       |
                        |
                        V
                    (ok, filled)

所以我已经阅读了关于child_process和官方node.jsdocs的文章,并且知道有:

  • 分叉
  • 执行
  • 孩子

模式。我也可以从我的parent.js 文件(例如通过 pm2)中 run a separate npm task,但我不知道在这种情况下我应该使用什么以及什么适合我的需要。因此,任何建议、解释都会有所帮助,并且会通过我的投票获得回报。

【问题讨论】:

  • 如果它需要是一个单独的进程,并且你想直接从父进程控制它或者通过节点的简单通信机制与它通信,那么这就是 child_process 的用途。如果您不需要从父级控制它,而只是希望它同时启动,则可以使用一些外部代理(例如 shell 脚本或 pm2)同时启动两个进程。
  • 我不需要控制子进程。我只想将参数从父级传递给它。至于现在,我正在寻找spawn,这种情况似乎fine,但我不确定。 PM2 也是一个选项,但我想使用 in-house node.js 魔术,没有任何其他扩展
  • 然后,只需使用spawn() 并继续。这里没有什么大的优化。如果spawn() 有效,请使用它。看来你想多了。

标签: javascript node.js child-process


【解决方案1】:

您可以在此处查看,并提供如何执行此操作的简单示例。 https://zaiste.net/nodejs-child-process-spawn-exec-fork-async-await/ 希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多