child_process.spawn()不是't正在等待子节点进程完成
child_process.spawn() isn't waiting for child node process to complete
以下按预期工作,等待3秒后退出:
child_process.spawn( 'sleep', [3] );
但它会立即退出,而不是像应该的那样等待3秒(就像直接运行该命令时一样:
child_process.spawn( 'node', ['-e', '"setTimeout(null, 3000);"'] );
有什么原因吗?谢谢
编辑:spawnSync()
在两种情况下的行为方式相同。此外,我不希望spawn()
函数阻塞,我希望节点进程在退出之前等待其子进程退出。
问题是双引号。这使得您的程序执行只是一个字符串,而不是setTimeout()
函数调用。使用这个替代:
child_process.spawn( 'node', ['-e', 'setTimeout(null, 3000);'] );
请注意删除了setTimeout()
周围的双引号。
有了双引号,它实际上与从命令行运行相同(假设是类似Unix的操作系统/shell):
'node' '-e' '"setTimeout(null, 3000);"'
尝试一下,您会看到它立即返回,因为最后一个参数只是一个字符串值,不需要解析和执行。然后试试这个:
'node' '-e' 'setTimeout(null, 3000);'
这将像你预期的那样等待三秒。
相关文章:
- 为什么正文标记后的脚本标记在子节点中计数
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- 在子节点上重复
- js初学者-如何在比网页中的DOM节点低一个级别上立即解析所有子节点
- 如何在所有父节点上获取文件夹图标,在所有子节点上获取文件夹加图标(左侧的图标)
- 如何在普通 JavaScript 中获取内部子节点的最外层父节点
- 在 dom 元素中插入跨度而不覆盖子节点
- JSTREE open_node不在子节点上工作
- 如何在将转换应用于子节点后重排容器
- 设置拖放子节点以在表中显示 JSON 数组
- 加载网页后,在树视图中如何显示子/节点的展开和折叠
- 在等待节点回调时运行任意代码
- 在子节点之前预置文本
- 在呈现子视图之前等待集合数据
- 无法在 Javascript 代码中选择子节点
- 如何在从 Meteor.method 返回之前等待子进程结果
- 在树布局中选择子节点的所有路径和父节点
- 在没有所有子节点的情况下访问选中节点的名称'姓名
- 初级子节点在克隆后被返回为未定义,所以我无法设置它们的属性
- child_process.spawn()不是't正在等待子节点进程完成