从HTML按钮单击停止Node.js无休止循环

时间:2018-08-03 14:28:45

标签: javascript html node.js

是否可以通过HTML停止node.js Web服务器上的长时间计算(在本示例中为无限循环)?

此刻,我有两个按钮(开始和停止)。启动按钮发出单击按钮时启动的功能,如下所示:

function started(){
    socket.emit('started');
}

并在server.js上:

client.on('started',function(){
    while(!cancel)
    {
    }
});

如何通过单击停止按钮退出循环?

1 个答案:

答案 0 :(得分:2)

好吧,您实际上并未向我们展示足够的代码,但是您可能无法做到这一点。 node.js是单线程事件驱动的系统。只要您处于while循环的中间,就无法再获得任何事件,因此您将永远无法处理来自客户端的会更改cancel变量的任何事情。

唯一可行的方法(尽管在服务器上可能仍然是不受欢迎的编码)是,如果您自己的循环内服务器代码可以更改cancel变量,而不会从外界获取任何新事件来引起循环停止。

如果您依靠其他事件进入服务器来更改该标志,则此操作将永远无法进行。整个设计还似乎暗示服务器仅满足一个用户的需求,这也可能是服务器的不当设计。


目前发布的这个特定问题是XY problem,您在这里无法解释要解决的总体问题,而是描述了在特定尝试解决方案中遇到的一些问题。这使我们无法帮助您解决实际问题,在这种情况下,我们真正能告诉您的是这是一个错误的解决方案,将无法正常工作。请不要发布XY问题。告诉我们您的真正问题。向我们展示您尝试的解决方案以及遇到的问题是完全可以的,但是只有在您说明了要解决的总体问题之后才可以。这样一来,我们就可以为您提供更高层次和更好的解决方案,而您甚至还没有想过要问他们。

只有您解释了实际的顶级问题并向我们展示了很多代码,我们才能为您的问题提供适当的解决方案。