我想终止ES6异步/等待中的spawnSync进程。
(async () => {
const type = 'python';
const exefile = './test.py';
let opt = [file];
let result = await spawnSync(type, opt, {
encoding: 'utf-8'
});
if (exefile !== '') {
const exeRst = await spawnSync(exefile, {
encoding: 'utf-8'
});
setTimeout(() => {
console.log('⏰ Timeout!!');
console.log('exeResult.pid : ', exeResult.pid);
exeResult.kill();
}, 2000);
if (
result.output['1'] === '' &&
result.output['2'] === '' &&
exeRst.output['1'] !== ''
) {
console.log('?exeResult:', exeRst);
console.log('?result:', result.output);
}
}
})();
如果第二个spawnSync exeRst需要很长时间,它将在2秒内停止执行。
test.py需要10秒钟或更长时间才能运行。
但是,由于等待,在所有test.py执行结束后的10秒后将执行setTimeout。
如何使它无法运行超过2秒?
答案 0 :(得分:1)
spawnSync支持名为timeout
的选项字段。这指定以毫秒为单位的进程运行时间:
await spawnSync(exefile, {
encoding: 'utf-8',
timeout: 2000
});