Node.js – 用睡眠模拟一个I / O

我的目标是通过node.js演示一个非阻塞代码的强大function,所以我尝试用sleep语句模拟一个I / O事件,但是我的努力仍然失败:

var http = require('http'); var url = require('url'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); if( url.parse(request.url).pathname == '/wait' ){ var startTime = new Date().getTime(); while (new Date().getTime() < startTime + 15000); response.write('Thanks for waiting!'); } else{ response.write('Hello!'); } response.end(); }).listen(8080); console.log('Server started'); 

当我在http:// localhost:8080之后访问http:// localhost:8080 / wait时 ,两者都在等待循环。

有小费吗?

setTimeout是你的朋友,所以是大括号。

 app.use(function(request, response, next) { var doIt, startTime; if (request.path === '/wait') { startTime = new Date().getTime(); doIt = function() { if (new Date().getTime() < startTime + 15000) { response.write('Thanks for waiting!'); return setTimeout(doIt, 1000); } else { return response.end(); } }; return doIt(); } else { response.write('Hello!'); return response.end(); } });