【问题标题】:Node.js input data event stopNode.js 输入数据事件停止
【发布时间】:2012-08-21 06:09:24
【问题描述】:

我使用这个函数在我的 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.on('end ')”?有没有办法阻止事件侦听器停止侦听该事件,或者只是调用“req.end();”停止的正确方法?

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

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

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

    这里是关于流的不是超级有用的 API 文档:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 2012-12-12
      • 2021-04-21
      • 1970-01-01
      相关资源
      最近更新 更多