2013-03-02 53 views
0

我有一個Express URL,它必須等待數據通過串行端口(或其他網絡連接)從外部設備到達。這可能需要兩秒鐘的時間。我明白,如果我的獲取功能模塊,它會阻止整個節點的過程,所以我想避免這種情況:長(IO-綁定)請求在快遞

app.get('/ext-data', function(req, res){ 
    var data = wait_for_external_data(); 
    res.send(data); 
}); 

我的確有外部數據的發射器,這樣我就可以當外部數據到達回調。

我不清楚如何在代碼等待外部數據變爲可用時告訴express做其他事情,以及在我擁有它們時如何將它們傳遞給休眠對象。

回答

1

通常情況下,您會將回調傳遞給您的wait_for_external_data函數,一旦收到數據,函數將被調用,並且您需要編寫wait_for_external_data以使其不會被阻塞。正如你所提到的那樣,你可以使用事件發射器來獲取數據。如果您詳細說明您正在使用什麼庫來獲取數據,我可以提供更多信息。

app.get('/ext-data', function(req, res){ 
    wait_for_external_data(function(data){ 
    res.send(data); 
    }); 
}); 
+0

啊!這很有道理。我可以在關閉時傳遞響應,並在有數據時發送數據。我使用的圖書館是我自己的,但你所說的就足夠我繼續了。 – iter 2013-03-02 03:04:09