我正在用快递&做一个简单的请求request模块,并对.yith_magnifier_zoom_magnifier {
position: absolute !important;
margin: 0 auto !important;
height: 100%!important;
top: inherit!important;
bottom: 100%;
left: 50%!important;
margin-left: -150px!important;
}
的响应进行管道:
res
除非我取消下载,否则这就像魅力一样。结束事件不会触发,几秒钟后,会抛出ESOCKETTIMEDOUT错误。
如何关闭管道? These node docs声称我可以致电var pipe = request.get({
url: 'url-to-file'
});
pipe.on('response', function (response) {
req.on('close', function () {
// these methods won't work:
// pipe.unpipe();
// pipe.end();
// pipe.finish();
// pipe.close();
});
pipe.on('end', function () {
// this will never fire if I cancel the request
});
res.writeHead(response.statusCode, response.headers);
pipe.pipe(res);
});
,但所有节点提供的.unpipe
都不是功能(使用v0.12.7& 4.2.2&& 5.0.0进行测试),可能是因为它不是原始节点流。
我也尝试使用诸如结束,结束和关闭之类的事件,但它们都不起作用。
答案 0 :(得分:2)
request.get()
不返回纯node.js流,而是返回从本地Request
类继承的Stream
对象,并添加一些自定义方法。您要查找的方法是Request#abort()
(Source link)。
您的代码示例如下所示:
var pipe = request.get({
url: 'url-to-file'
});
pipe.on('response', function (response) {
req.on('close', function () {
pipe.abort();
});
pipe.on('end', function () {
// this will never fire if I cancel the request
});
res.writeHead(response.statusCode, response.headers);
pipe.pipe(res);
});