Request: كيف يتم إجهاض الطلب؟

تم إنشاؤها على ١٥ يناير ٢٠١٤  ·  5تعليقات  ·  مصدر: request/request

كنت أحاول إجهاض طلب لساعات ، هل يمكن لأي شخص مساعدتي من فضلك؟

هذا ما لدي:

app.get('/theUrl', function (req, resp) {

  var parser = new Transform();
  parser._transform = function(data, encoding, done) {
    var _this = this;
    // Process data here
  }.on("error", function(err){
        console.log(err);
      });

  var theRequest = request({
    'method' : 'GET',
    'url': '/anotherUrl',
    'headers' : {
      "ACCEPT"  : "text/event-stream"
    }
  }, function (error, response, body){
    if (error) {
      //Throw error
    }
  }).pipe(parser).pipe(resp);

  req.on("close", function(){
    parser.end();
    theRequest.abort(); //Doesn't work
  });
});

كما يمكنك أن ترى نوعًا من وكيل دفق ، لذلك إذا قام العملاء بإلغاء الطلب ، فأنا بحاجة إلى إغلاق أو إلغاء طلب إعادة التوجيه ( theRequest ).

أيه أفكار؟

شكرا!

التعليق الأكثر فائدة

var r = request(url)
r.abort()

يجب علينا إدخال هذا في الوثائق.

ال 5 كومينتر

var r = request(url)
r.abort()

يجب علينا إدخال هذا في الوثائق.

شكرا على الرد mikeal ، لقد جربت هذا:

var theRequest = request({
  'method' : 'GET',
  'url': '/anotherUrl',
  'headers' : {
    "ACCEPT"  : "text/event-stream"
  }
}, function (error, response, body){
  if (error) {
    //Handle error
  }
}).pipe(parser);

theRequest.abort();

وهذا الخطأ يثير:

/home/vagrant/gateway/app.js:876
      theRequest.abort();
                 ^
TypeError: Object #<ServerResponse> has no method 'abort'
    at IncomingMessage.<anonymous> (/home/vagrant/gateway/app.js:876:18)
    at IncomingMessage.EventEmitter.emit (events.js:92:17)
    at abortIncoming (http.js:1912:11)
    at Socket.socket.onend (http.js:2010:7)
    at Socket.g (events.js:180:16)
    at Socket.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
    at process._tickCallback (node.js:415:13)

هل يمكن ان تساعدني من فضلك؟

شكرا لك!

من المستندات:

pipe() يُرجع التدفق الوجهة

لذلك لم تعد تعمل مع كائن Request . في هذه الحالة ، تتصل بـ abort() على ServerResponse . افعل هذا بدلاً من ذلك:

var theRequest = request({ ... });

theRequest.pipe(parser);

theRequest.abort();

شكرا جزيلا!

شكرا جزيلا!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات