2016-08-02 7 views
2

私の例では、単純なHTTPサーバです:クライアントが接続すると、変数は、クライアントがクッキーを持っているかどうかによってノードの順序規則(同期/非同期)について混乱

http.createServer((req, res) => { 
    if(req.method === `GET`){ 

    if(req.headers.cookie === undefined){ 
     let x = 1 
     let y = 2 
     let z = 30 
    } 
    else{ 
     let x = 10 
     let y = 20 
     let z = 3 
    } 

    switch(req.url){ 

     case `/`: 

     // >>>> I need the appropriate variables here for the same client <<<< 

     break 

     case `/page`: 

     // >>>> or here <<<< 

     break 

     default: 
     res.statusCode = 404 
     res.end(`Error 404`) 
    } 
    } 
}).listen(3000) 

定義されています。しかし、複数のクライアントがほぼ同時に接続するとどうなりますか? Nodeはそれをどのように扱いますか?

スイッチの前にif/elseステートメントが発生するため、クライアントが混在した変数を取得する可能性はありますか?代わりに、if/elseの各部分にスイッチのコピーを2つ配置する必要がありますか?

違いはありませんか?

答えて

0

各接続はNode内に独自の「スタック」となるため、独立しています。実際には、各接続にはreqオブジェクトのコピー/インスタンスがあり、書き込むコードはそのreqオブジェクトでのみ動作しています。存在する他のすべてのオブジェクトは、独自のスタックです。

コードは順番に実行されるため、スイッチの前にif/elseを置いても安全です。