2016-08-02 3 views
2

Мой пример простой сервер HTTP:Confused о правилах заказа Node (синхронный/асинхронный)

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 возникает перед коммутатором? Должен ли я вместо этого разместить 2 копии переключателя в каждой из частей if/else?

Или нет никакой разницы?

ответ

0

Каждое соединение будет собственным «стеком» в узле, поэтому они будут независимыми. Действительно, каждое соединение будет иметь свою собственную копию/экземпляр объекта req, а код, который вы пишете, работает только на этом объекте req. Все остальные req объекты, которые существуют, представляют собой их собственный стек.

Код будет происходить по порядку, поэтому вы можете безопасно использовать if/else перед коммутатором.

Смежные вопросы