Node.jsinput数据事件停止

我使用这个函数在Node.js应用程序中获取请求的input数据:

function getData(callback){ req.data = ''; req.receivedDataSize = 0; req.maxDataSize = 5000; req.dataCorrupted = false; req.on('data', function(chunk){ if(req.dataCorrupted === false && chunk.length < req.maxDataSize && req.receivedDataSize < req.maxDataSize){ req.data += chunk; req.receivedDataChunk += chunk.length; } else { // throw 413 error. req.dataCorrupted = true; return; }); req.on('end', function(){ if(req.dataCorrupted === false){ callback(null); } else { callback('input-data-corrupted'); } return; }); } 

我想知道如何使用每个事件callback中的这些“返回”语句,当我抛出“return”时,下一个“req.on('data')|| req.on('end')”会发生什么? ? 有没有办法停止事件监听器停止监听该事件,或只是调用“req.end();” 一个正确的方法来阻止?

在你的例子中, return并没有做任何事情,而是结束函数并返回一个值。 它不会阻止回拨的stream。 你可以从你的代码示例中完全删除这些语句,它将工作相同。

调用req.end()应该终止它,如果它是一个stream,这意味着req.on('data')将不会被触发了。

以下是关于stream的非常有用的API文档:

http://nodejs.org/api/stream.html#stream_stream_end

这也是一个有用的节点指南: http : //maxogden.com/node-streams