gpt4 book ai didi

node.js - 如何在node.js中异步使用setTimeout

转载 作者:搜寻专家 更新时间:2023-10-31 22:42:33 24 4
gpt4 key购买 nike

我是 node.js 的新手,我尝试使用 setTimeout 来模拟长连接并希望它异步运行。

var http = require('http');

http.createServer(function (request, response) {
console.log('New request @ ' + request.url);
(function (response) {
setTimeout(function () {
console.log('Time is up');
response.writeHead(200, {"Content-Type": "text/plain"});
response.end('Hello World\n');
}, 3000);
})(response);
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

但是,上面的代码执行起来就像一个同步单线程应用程序,每 3 秒只能处理一个请求。

我认为 node.js 中的所有内容都应该异步运行。那么,这里的问题是什么?

最佳答案

SetTimeout 是异步的,你不需要中间那个匿名函数,只写这个。

var http = require('http');

http.createServer(function (request, response) {
console.log('New request @ ' + request.url);
setTimeout(function () {
console.log('Time is up');
response.writeHead(200, {"Content-Type": "text/plain"});
response.end('Hello World\n');
}, 3000);
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

如果您产生 10 个并发请求,则总计算时间将在 3 秒左右,这意味着它是异步的。可以使用ab工具检查,或者如果你编程node,可能更容易安装http-perf .并运行 nperf -c 10 -n 10 http://127.0.0.1:8124

关于node.js - 如何在node.js中异步使用setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com