如何解决如何将值按顺序传递给 node.js 子进程的标准输入
我想在子进程中从javascript调用另一个shell脚本,并按顺序将值传递给它的标准输入。 我是这样写的。
const cp = require("child_process");
let counter = 0;
function getResult(stdout) {
return new Promise(resolve => {
stdout.on('data',data => {
counter ++;
console.log(counter);
resolve(`success(${counter})`);
})
})
}
exports.handler = async(event) => {
const proc = cp.spawn('./test.sh',[],{ cwd: '/path/to/script/' })
let result;
console.log("start");
proc.stdin.write('aaa\n');
result = await getResult(proc.stdout);
console.log(result);
proc.stdin.write('bbb\n');
result = await getResult(proc.stdout);
console.log(result);
proc.stdin.write('ccc\n');
result = await getResult(proc.stdout);
console.log(result);
proc.stdin.write('ddd\n');
result = await getResult(proc.stdout);
console.log(result);
proc.kill();
console.log('end');
};
日志如下。
start
1
success(1)
2
3
success(3)
4
5
6
success(6)
7
8
9
10
success(10)
end
从日志中可以看出,每次我向标准输入传递一个值时,调用次数都会增加。 我该怎么做才能避免增加次数?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。