javascript 防止node.js中事件循环阻塞的有效方法

ulydmbyx  于 2023-10-14  发布在  Java
关注(0)|答案(1)|浏览(133)

我目前正在使用JavaScript. js创建两个API。两者都相对简单。第一个API涉及到一个for循环,它贯穿1到3,000,000。同时,第二个API被设计为在控制台中打印一个简单的字符串。
我已经准备好了所有的源代码。

app.get('/firstAPI', (req, res) => {
    for (let i = 1; i <= 3000000; i++) {
        console.log('First API' + i + '\n');
    }
});

app.get('/secondAPI', (req, res) => {
    console.log('Here is the Second API');
});

不过,我遇到了点麻烦。如果我调用第一个API,它将花费大量的时间来执行。这个冗长的过程会阻止对第二个API的任何调用,尽管它很简单。我怀疑这是由于node.js中的事件循环阻塞。
所以我的问题是我该如何规避或防止这种堵塞?

c7rzv4ha

c7rzv4ha1#

如上所述,请分享一个你正在做的事情的例子,因为在这里你只是使用CPU 100%,这基本上不应该发生。另外,您甚至不响应请求,这意味着它将在客户端永远保持(至少直到超时)
在你的代码中,API已经是非阻塞的了,只要你没有100%加载CPU。举例来说:

app.get('/firstAPI', (req, res) => {
    console.log('First API received request');
    setTimeout(function(){
        res.end();
        console.log('First API responded to request');
    }, 5000);
});

app.get('/secondAPI', (req, res) => {
    console.log('Here is the Second API');
    res.end();
});

在这种情况下,第一个API需要5秒来应答,但是在这5秒内,第二个API将工作得非常好

相关问题