如何绑定事件处理程序以请求承诺在资源太大时关闭套接字?
how to bind an event handler to request promise to close a socket when resource is too big?
使用request-promise 我想知道如何在资源超过2000 位时提前关闭套接字。从 .on('data', callback) 事件处理程序我想关闭套接字并跳转到 then() 中的代码。我已经尝试过 this.abort() 但它没有用。现在,事件句柄工作并获取位数,但我可以在位大小触发 if 条件时关闭事件的套接字。
var request = require('request');
var rp = require('request-promise-native');
var size = 0;
const MAX_SIZE = 2000;
rp
.get('https://sitecozy.com/screenshot.png')
.on('data',(ok)=>
{console.log(size)
size += ok.length;
if (size > MAX_SIZE) {
console.log("Aborting this request as it exceeds max size")
// I wish to close the socket and trigger then() from here.
}
}
)
.then(function (htmlString) {
console.log("good")
})
.catch(function (err) {
console.log("bad")
});;
我已经成功地使用标准请求包并将其包装在一个承诺中。我希望使用请求承诺,因为我的代码中已经有很多嵌套块:
const request = require('request');
var size =0;
var maxLength = 8175;
new Promise ((resolve,reject)=>{
var jo = request("https://upload.wikimedia.org/wikipedia/commons/9/9b/Sternwarte_Darmstadt_HDR_Panorama_10MB_-_Photographed_by_James_Breitenstein.jpg")
.on('response',(ok)=>{
jo.responseHeaders = ok.headers;})
.on('data',(ok)=>{
size+=ok.length;
if (size > maxLength){
console.log("DATA",size);resolve(jo.response);jo.abort();}})
.on('end',function(ok){console.log("END");})})
.then(function (ok) {
console.log("ok then",ok)
})
.catch(function (err) {
console.log("error",err)
});
使用request-promise 我想知道如何在资源超过2000 位时提前关闭套接字。从 .on('data', callback) 事件处理程序我想关闭套接字并跳转到 then() 中的代码。我已经尝试过 this.abort() 但它没有用。现在,事件句柄工作并获取位数,但我可以在位大小触发 if 条件时关闭事件的套接字。
var request = require('request');
var rp = require('request-promise-native');
var size = 0;
const MAX_SIZE = 2000;
rp
.get('https://sitecozy.com/screenshot.png')
.on('data',(ok)=>
{console.log(size)
size += ok.length;
if (size > MAX_SIZE) {
console.log("Aborting this request as it exceeds max size")
// I wish to close the socket and trigger then() from here.
}
}
)
.then(function (htmlString) {
console.log("good")
})
.catch(function (err) {
console.log("bad")
});;
我已经成功地使用标准请求包并将其包装在一个承诺中。我希望使用请求承诺,因为我的代码中已经有很多嵌套块:
const request = require('request');
var size =0;
var maxLength = 8175;
new Promise ((resolve,reject)=>{
var jo = request("https://upload.wikimedia.org/wikipedia/commons/9/9b/Sternwarte_Darmstadt_HDR_Panorama_10MB_-_Photographed_by_James_Breitenstein.jpg")
.on('response',(ok)=>{
jo.responseHeaders = ok.headers;})
.on('data',(ok)=>{
size+=ok.length;
if (size > maxLength){
console.log("DATA",size);resolve(jo.response);jo.abort();}})
.on('end',function(ok){console.log("END");})})
.then(function (ok) {
console.log("ok then",ok)
})
.catch(function (err) {
console.log("error",err)
});