从上周开始学习 node 并掌握了 node 和 express。但现在我面临一个问题。我试图在不同的端口上运行多个快速服务器,并希望它们在 10 秒后返回响应。运行程序后,服务器启动正常,但是当我点击 http://localhost:3000 或任何服务器的 url 时,观察到以下内容:
- 在客户端,我在 10 秒后得到所有服务器的正确响应
- 服务器进入无限循环并在延迟 10 秒后不断打印“返回数据…”
我尝试使用一个函数,使用一个 js 文件导出服务器,另一个类导入它并在 for 循环中调用。但是服务器在延迟 10 秒后不断打印“返回数据…”。下面是我的代码:
var express = require('express');
const data = '{"key":"value"}';
const server = function (port) {
let app = express();
app.get('/', (req, res) => {
setInterval(function () {
console.log('returning data...')
res.end(data);
}, 10000); //want a delay of 10 secs before server sends a response
})
app.listen(port, () => console.log("Server listening at http://%s:%s",
"localhost", port))
}
console.log('\nStarting servers.......')
for (var i = 0; i < 5; i++) {
server(3000 + i)
}
原文由 technicalworm 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在使用 window.setInterval 而不是 window.setTimeout ,这就是多次运行的原因。