NodeJ如何解决连续操作?

时间:2019-03-28 21:09:57

标签: javascript node.js

有些事件循环接受回调并在需要时执行它们。如果我理解这是一个线程事件循环,那么一次执行一个回调。我写测试

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'都并行执行。

2 个答案:

答案 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/