2011-09-06 70 views
0

比方說,我有這個簡單的代碼,用.XML文件進行響應。Node.js:響應是否傳遞給了正確的用戶?

app.post '/incoming', (req,res) -> 
    console.log "Hello, incoming call!" 
    message = req.body.Body 
    from = req.body.From 

    sys.log "From: " + from + ", Message: " + message 

    test = "hello" 
    r = new Twiml.Response() 
    r.append(new Twiml.Say('Hello, there!' + test + ' Enter your ATM card PIN')) 
    console.log(r.toString()) 

    res.send r.toString() 

是否有可能如果2個請求同時發生,會得到錯誤的響應?我這樣問是因爲我沒有完全理解異步是如何工作的,如果這是做我想做的事情。

感謝

+0

@Raynos,我其實沒有。我曾經在這裏和那裏碰過,但沒有什麼特別的。 – donald

回答

2

如果你想知道的響應去,從身體除了代碼與res像這樣交互刪除所有代碼,客戶端:

app.post '/incoming', (req,res) -> 
    res.send r.toString() 

現在你可以看到你的發送r.toString()到正確的響應。

是否有可能,如果2個請求到來的同時,

即使2個請求到來的同時,JavaScript是單線程和阻塞等有從未任何競爭條件。

2

你問的是一個關於CoffeeScript範圍的問題。當你有一個功能,例如

(req, res) -> 

那麼該函數中,你可以放心,reqres總是指向到功能均通過了對象。唯一的例外是如果你有一個具有相同參數名稱的嵌套函數。例如,

(req, res) -> 
    setTimeout ((req, res) -> console.log req, res), 1 

將顯示undefinedundefined當外部函數調用的任何值,因爲傳遞給setTimeout功能都有自己的reqres論據陰影reqres

很明顯,你沒有這樣做(也不應該),所以你不用擔心。您的服務器每秒鐘可以抓取數萬次,並且每個reqres將保持不同。

相關問題