2016-08-02 20 views
2

Mein Beispiel ist eine einfache HTTP-Server:Verwirrt über Knoten, um Regeln (synchron/asynchron)

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) 

Wenn ein Client eine Verbindung herstellt, werden die Variablen definiert, ob der Client ein Cookie hat. Was aber, wenn mehrere Clients fast gleichzeitig eine Verbindung herstellen? Wie geht Node damit um?

Ist es möglich, dass die Clients Variablen durcheinander bringen, weil die if/else-Anweisung vor dem Wechsel stattfindet? Sollte ich stattdessen 2 Kopien des Schalters in jedes der if/else Teile legen?

Oder gibt es keinen Unterschied?

Antwort

0

Jede Verbindung ist ein eigener "Stack" in Node, so dass sie unabhängig sind. Wirklich, jede Verbindung hat ihre eigene Kopie/Instanz des Objekts req, und der Code, den Sie schreiben, arbeitet nur an diesem req Objekt. Alle anderen req Objekte, die vorhanden sind, sind ihre eigenen Stapel.

Der Code wird in der Reihenfolge ausgeführt, so dass Sie sicher sind, das if/else vor dem Schalter zu haben.