首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NodeJs如何解决连续操作?

NodeJs如何解决连续操作?
EN

Stack Overflow用户
提问于 2019-03-29 05:09:57
回答 2查看 70关注 0票数 0

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

代码语言:javascript
运行
复制
setInterval(() => { console.log('INTERVAL')}, 801);
setInterval(() => { while(true) {  }}, 800);

首先到达事件循环的是第一个setinterval()。第二个setinterval() (具有无限循环)第二个到达。所以有一个线程执行while(true),但它不能执行console.log('INTERVAL')

这是否意味着,如果我将在NodeJs上编写服务器,在一个端点上执行连续的计算,如果一个客户端发送请求,其他客户端应该等待,直到服务器完成了这些长时间的计算,然后将服务于其他客户端?

在CLR中,我们使用任务,c#线程拉取创建两个线程,Console.WriteLine("Interval")和'while true‘都是并行执行的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-29 15:50:01

是的,如果一个端点正在执行复杂的计算,则服务器挂起,如果其他端点请求,它必须等待。节点只有一个事件循环和有限数量的工作线程

您不应该阻塞事件循环。不应在节点js中同步或异步执行复杂的计算。

有关更多信息,请参阅:https://nodejs.org/en/docs/guides/dont-block-the-event-loop/

票数 0
EN

Stack Overflow用户

发布于 2019-03-29 06:15:51

不要使用while(true){}

改用下面的代码:

代码语言:javascript
运行
复制
setInterval(() => { console.log('INTERVAL1')}, 801);
// change 1000ms with time you need
setInterval(() => {  {setInterval(() => { console.log('INTERVAL2')}, 1000)  }}, 800);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55406880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档