当对本地主机节点应用程序有多个请求时,谷歌浏览器将请求逐个排队

时间:2018-11-10 05:01:38

标签: node.js google-chrome express

最近,我正在测试nodejs express Web应用程序的异步行为。我的代码很简单

const express = require('express');
const app = express();

const port = 3000;

app.get('/', (req, res) => {
    console.log(`hello main start`);

    setTimeout(() => {
        const date = new Date();
        console.log(date);
        res.send(`hello work done at ${date}!`);
    }, 20000);

    console.log(`hello main end`);
});

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`);
})

我发现一种经验,如果我只是在chrome浏览器中同时打开2个选项卡到端点url http://localhost:3000/,而没有打开开发者工具,则请求会被一一触发。我怎么知道它们被一一触发,是当我观察服务器控制台日志时,第二个请求日志仅在请求1完成后才开始。因此,我需要40秒才能完成我的2个请求。

但是,我不希望发生上述行为。因此,我尝试对邮递员执行相同的操作。

但是这次,我发现邮递员将同时触发这两个请求,并且我的服务器也立即记录了这两个请求。

更奇怪的是,如果我在打开chrome开发人员工具的同时打开2标签,其行为将与在邮递员那里看到的一样。

任何人都可以对此铬的行为进行解释吗? Google故意在chrome上这样做吗?

1 个答案:

答案 0 :(得分:0)

是的,这是Chrome的行为。对同一主机的相同请求将停止。如果您观看开发人员工具中的“网络”标签,这很明显。

Stalled