lei### 問題描述這里的終止不是指條件達成時的終止,而是靠外力終止。我用koa做web服務,puppeteer做爬蟲,通過循環讀取數據庫的名單,去查詢某個網站的數據,當名單查詢完成時,會停止運行。有沒有方法能夠中途終止爬蟲函數的運行,并且保證koa的正常運行,不殺死整個node進程?
1 回答

森林海
TA貢獻2011條經驗 獲得超2個贊
可以試試child_process(子進程),看看能不能滿足要求。
在主線程中衍生一個子線程,在需要的時候直接殺死子線程。
下面是測試代碼,主線程衍生一個子線程,3秒后殺死,子線程有一個定時器,每秒打印一個test
主線程代碼:
const cp = require('child_process');const grep = cp.fork(`${__dirname}/test.js`); grep.on('close', (code, signal) => { console.log(`子進程收到信號 ${signal} 而終止`); });// 發送 SIGHUP 到進程。setTimeout(() => { grep.kill('SIGKILL'); }, 3000)
子線程代碼:
let timer = setInterval(() => { console.log('test'); }, 1000);
輸出為:
test
test
子進程收到信號 SIGKILL 而終止
- 1 回答
- 0 關注
- 719 瀏覽
添加回答
舉報
0/150
提交
取消