簡體   English   中英

從HTML按鈕單擊停止Node.js無休止循環

[英]Stopping Node.js endless loop from on html button click

是否可以通過HTML停止node.js Web服務器上的長時間計算(在本示例中為無限循環)?

此刻,我有兩個按鈕(開始和停止)。 啟動按鈕發出單擊按鈕時啟動的功能,如下所示:

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

並在server.js上:

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

如何通過單擊停止按鈕退出循環?

好吧,您實際上並未向我們展示足夠的代碼,但是您可能無法做到這一點。 node.js是單線程事件驅動的系統。 只要您處於while循環的中間,就無法再獲得任何事件,因此您將永遠無法處理來自客戶端的任何會更改cancel變量的事情。

唯一可行的方法(盡管在服務器上可能仍然是不受歡迎的編碼)是,如果您自己的服務器代碼在循環內可以更改cancel變量,而不會從外界獲取任何新事件來導致循環停止。

如果您依靠其他事件進入服務器來更改該標志,則此操作將永遠無法進行。 整個設計還似乎暗示着服務器僅滿足一個用戶的需求,這也可能是服務器的不正確設計。


現在發布的這個特定問題是XY問題 ,您無法在其中解釋要解決的總體問題,而是描述了在特定嘗試解決方案中遇到的一些問題。 這使我們無法幫助您解決實際問題,在這種情況下,我們真正能告訴您的是這是一個錯誤的解決方案,將無法正常工作。 請不要發布XY問題。 告訴我們您的真正問題。 向我們展示您嘗試的解決方案以及遇到的問題是完全可以的,但是只有在您說明了要解決的總體問題之后才可以。 這使我們能夠為您提供更高的水平和更好的解決方案,而您甚至還沒有想過要提供這些解決方案。

如果您解釋了實際的頂級問題並向我們展示了很多代碼,我們只能為您的問題提供適當的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM