var express=require('express');
var app=express();
module.exports=app;
app.get('/request1', function(req,res){
request1(function(){
res.end();
});
console.log("req1");
});
app.get('/request2',function(req,res){
console.log("req2");
request2(function(){
res.end();
});
});
function request1(callback){
process.nextTick(function(){
for(var i=0;i<9999999;i++){
console.log(i);
}
return callback();
});
};
function request2(callback){
process.nextTick(function(){
console.log('request2');
callback();
});
};
app.listen(3000);
在这段代码中,我首先调用/ request1需要时间来处理循环。 但在另一个选项卡中,我请求/ request2直到/ request1未完成。 / request2也没有执行。
请帮我解决这个问题。
答案 0 :(得分:0)
Node.js是单线程的。它以异步方式执行IO和网络操作。
这里你正在执行for循环来阻塞线程。
因此,一旦完成,您将收到第二次请求的请求。
答案 1 :(得分:0)
在提出请求时,您应该查看回调的概念。如果你真的想要做同时做一些工作的过程,那么使用回调非常重要。但是如何在node.js中同时做多个事情是不可能的。然而,回调让你感受到了这一点。