多个parllel请求未在异步中的节点js中处理

时间:2015-11-20 05:38:57

标签: node.js

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也没有执行。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

Node.js是单线程的。它以异步方式执行IO和网络操作。

这里你正在执行for循环来阻塞线程。

因此,一旦完成,您将收到第二次请求的请求。

答案 1 :(得分:0)

在提出请求时,您应该查看回调的概念。如果你真的想要做同时做一些工作的过程,那么使用回调非常重要。但是如何在node.js中同时做多个事情是不可能的。然而,回调让你感受到了这一点。