難道有人請向我解釋下列行爲的原因嗎?節點js express:無效的請求數據?
我有一個的NodeJS /快遞網絡服務器和假設包含以下代碼的郵路的一個:
req.on('data', function() { console.log('data arrived'); })
此代碼按預期工作,並寫入「數據到達」消息調用時安慰。下面的代碼然而:
setTimeout(function() { req.on('data', function() { console.log('data arrived'); }) }, 1000);
儘管有相同的情況下不會打印任何東西。如果我們在短時間內訂閱他們的事件,請求對象流會發生什麼?
我需要這個的原因是我想上傳大文件到我的服務器。當一個post請求到達時,我需要創建一個數據庫條目並將數據傳遞給它。由於可能的大小,我無法將數據塊存儲在內存中,但我無法從數據庫回調或任何回調獲取請求對象的數據。
你有一個想法如何解決這個問題? 在此先感謝!
UPDATE
下面的代碼仍然不能正常工作:
req.pause();
setTimeout(function() {
req.on('data', function(data) { console.log('data arrived'); })
req.resume();
}, 1000);
UPDATE2
的最終目標是做SG是這樣的:
req.pause();
doSometingAsync(function(result) {
req.on('data', function(data) { doSomethingWithData(data, result) });
req.resume();
});
,但這似乎不起作用...
UPDATE 3
這將導致一個「過去」沒有別的:
req.pause()
setTimeout() ->
console.log 'elapsed'
req.on 'error', (error) -> console.log error
req.on 'data', (data) -> console.log 'in data'
req.on 'end',() -> console.log 'end'
req.resume()
, 2000
doSomethingAsync有一個正確調用回調方法。回調觸發正常。主要的問題是req.on回調中的代碼從不執行。 – kataik
有一個req.resume()失蹤..我可以殺死自己監督這個..只是嘗試我的最後一個代碼片段之一。 – GottZ
不幸的是,仍然無法正常工作,請查看我的最後一個例子,儘可能簡化以顯示問題 – kataik