如何停止Node.js中的异步线程
我需要一个巨大的帮助或建议,请。我需要强调Node.js服务器——只是CPU高——因为我需要测试市场的监控工具如何停止Node.js中的异步线程,node.js,express,asynchronous,Node.js,Express,Asynchronous,我需要一个巨大的帮助或建议,请。我需要强调Node.js服务器——只是CPU高——因为我需要测试市场的监控工具
var shouldRun = true;
app.get("/cpuup", (req, res) => {
var result = 0;
while (shouldRun) {
result += Math.random() * Math.random();
}
return result;
});
app.get("/cpudown", (req, res) => {
shouldRun = false;
});
有没有人能给我一些其他方法的建议,或者我不能停止一个异步线程?
谢谢 Synchronous
当
循环阻塞时,shouldRun=false
将永远无法到达
在像web服务器这样需要并发性的应用程序中,应该避免阻塞操作
依赖全局标志变量是有问题的,但这可以通过使用async
循环来解决。路由处理程序不应该返回任何内容,如果需要,返回的值应该作为响应发送
如中所述,Express Middleware和route处理程序应处理承诺拒绝以提供正确的错误处理,在使用async
函数的情况下,这需要try..catch
:
app.get("/cpuup", async (req, res, next) => {
try {
var result = 0;
while (shouldRun) {
result += Math.random() * Math.random();
await null; // a delay
}
res.send('' + result);
} catch (err) {
next(error);
}
});
无法停止此代码,因为它是的一部分。这不是对您问题的直接回答,但观看此视频应有助于对您的应用程序中发生的事情有更多的基本了解。@romellem谢谢!:)如果你否决了一个正确的答案,一件好事就是提供一个如何改进的评论。我不能否决。此外,这不是正确的答案。我问了如何停止异步线程。@barbs它解释了如何停止异步线程。OP中列出的一个it正在阻止,无法从另一个请求中停止。