有些事件循环接受回调并在需要时执行它们。如果我理解这是一个线程事件循环,那么一次执行一个回调。我写测试
setInterval(() => { console.log('INTERVAL')}, 801);
setInterval(() => { while(true) { }}, 800);
有第一个setinterval()
首先到达事件循环。第二个setinterval()
(无限循环)第二次到达。因此,一个线程执行while(true)
,而不能执行console.log('INTERVAL')
。
这是否意味着,如果I FE将在NodeJ上编写服务器,则在一个端点上执行连续计算,并且如果一个客户端发送了请求,则其他客户端应等待,直到服务器完成了这些长时间的计算,然后再为其他客户端提供服务客户吗?
P.S。在c#TPL中,我们使用Tasks,CLR线程拉创建两个线程,Console.WriteLine("Interval")
和'while true'都并行执行。
答案 0 :(得分:0)
请勿使用while(true){}
改为使用此:
setInterval(() => { console.log('INTERVAL1')}, 801);
// change 1000ms with time you need
setInterval(() => { {setInterval(() => { console.log('INTERVAL2')}, 1000) }}, 800);
答案 1 :(得分:0)
是,如果一个端点正在执行复杂的计算,而其他端点请求,则服务器将挂起,服务器必须挂起。节点只有一个事件循环,工作线程数量有限
您不应阻止事件循环。您不应在节点js中同步或异步执行复杂的计算。
请参阅此以获取更多信息: https://nodejs.org/en/docs/guides/dont-block-the-event-loop/