node.js - 在 Node.js 中如何为每个动态创建的子进程建立超时回调?
问题描述
假设我有一个循环,每次迭代都会创建一个子进程,如何为每个子进程创建一个超时回调函数,或者一个可以为所有子进程提供服务的函数?
var theSpawn = require("child_process").spawn;
for (var i=0; i<4;i++) {
theChild = spawn('ls', ['/']);
}
解决方案
目前尚不清楚您要使用单独的回调来完成什么。返回的子进程对象spawn()
是一个 eventEmitter,它支持许多事件:
const spawn = require("child_process").spawn;
for (let i=0; i<4;i++) {
let child = spawn('ls', ['/']);
child.on('close', () => {
console.log(`child ${i} closed`);
});
}
如果您尝试为每个孩子创建某种超时,您可以在循环中执行此操作:
const spawn = require("child_process").spawn;
for (let i=0; i<4;i++) {
const child = spawn('ls', ['/']);
const timer = setTimeout(() => {
console.log(`Hit timeout on child ${i} before it closed`);
}, 10 * 1000);
child.on('close', () => {
clearTimeout(timer);
console.log(`child ${i} closed`);
});
}
推荐阅读
- c++ - c++20无限范围/视图编译器错误
- javascript - 使用 PHP 对 MySQL 数据库中的消息进行排序
- c# - Response.Redirect 导致 localhost 重定向你太多次错误
- excel - Mac 上的 Excel VBA 德语特殊字符编码不正确 (ÄÜÖ)
- c# - C#将双引号替换为十进制值
- list - 如何使用列表类型保存从logstash发送到Redis的大数据?
- javascript - 阻止 iframe 滚动,直到父元素到达 iframe 的顶部/底部
- vba - 如何从 ITypeLib 指针获取 TypeLibInfo?
- node.js - 更新到 Angular 11 后,@angular/cdk 和 @angular/form 构建错误
- java - 在 Java 中生成 JWT 令牌以进行 hasura 授权