Ich versuche, http.request
in Promise
:
Wenn ich vom Remote-Server einen Fehler " statusCode
" erhalte, wird Erste Ablehnung und nach einer gewissen Zeit Zweite Ablehnung angezeigt. Wie man richtig macht, damit es nur einzelne Ablehnung anruft (ich denke Erste Ablehnung ist in diesem Fall richtig)? Ich denke, ich muss res
selbst schließen, aber es gibt keine close()
-Methode für ClientResponse
-Objekt.
UPD: Second Reject löst sehr selten aus - warum?
Ihr Code ist fast in Ordnung. Um ein wenig zu wiederholen, möchten Sie eine Funktion, die http.request mit diesem Formular umschließt:
%Vor% Beachten Sie die Hinzufügung von params
und postData
, so dass dies als allgemeine Anfrage verwendet werden kann. Und beachten Sie, dass die letzte Zeile req.end()
- die immer aufgerufen werden muss - im OP-Code fehlt.
Anwenden dieser paar Änderungen auf den OP-Code ...
%Vor%Dies ist nicht getestet, aber es sollte gut funktionieren ...
%Vor%Und diese Versprechen können auch verkettet werden ...
%Vor%Es ist einfacher für Sie, bluebird api zu verwenden, Sie können das Anforderungsmodul promistifizieren anfordern und die Anforderungsfunktion verwenden async als Versprechen selbst, oder Sie haben die Möglichkeit, das Modul Anfrage-Versprechen zu verwenden, das macht Sie nicht Arbeiten zum Erstellen eines Versprechens aber Verwendung und Objekt, die das Modul bereits verkapselt Versprechen, hier ist ein Beispiel:
%Vor%Tags und Links node.js promise httprequest