Node.js输入数据事件停止

Node.js input data event stop

本文关键字:事件 数据 js 输入 Node      更新时间:2023-09-26

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

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;
  });
}

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

在您的示例中,return不执行任何操作,而是结束函数并返回一个值。这并不能阻止流回叫。您可以从代码示例中完全删除这些语句,它也可以正常工作。

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

以下是关于流的API文档:

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

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