Node.js:如何停止管道传输数据

Cap*_*ous 3 stream node.js

我正在使用 request npm 模块创建一个请求。但是,如果内容类型不是 json,我希望流停止。目前,它不会停止,并且会生成错误,因为解压缩读取了无效的标头。我们如何停止流?

    var req = request(options)
    req
    .on('error', function (err) { console.log("err"); reject(err) })
    .on('response', function(response) { 

        if(response.headers['content-type'] != 'application/json')
        {
            console.log(response.headers['content-type'])
            req.destroy() // doesn't work
            this.destroy() // doesn't work
        }
    })
    .on('end', function () { resolve() })

    .pipe(gunzip)  // ERROR!
Run Code Online (Sandbox Code Playgroud)

Jér*_*ôme 5

您可以使用stream.pause(),如下所示:

var req = request(options)
req
  .on('error', function (err) { console.log("err"); reject(err) })
  .on('response', function(response) { 

    if(response.headers['content-type'] != 'application/json')
    {
        console.log(response.headers['content-type'])

        req.pause(); // stream paused
        reject('not json');
    }
  })
  .on('end', function () { resolve() })
  .pipe(gunzip)
Run Code Online (Sandbox Code Playgroud)