nodejs - Wie kann http.request promisifiziert werden? Ablehnung wurde zweimal aufgerufen

8

Ich versuche, http.request in Promise :

umzubrechen %Vor%

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?

    
happy_marmoset 22.07.2016, 18:59
quelle

2 Antworten

20

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%     
danh 23.07.2016 14:52
quelle
-1

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%     
Fernando Zamperin 22.07.2016 19:07
quelle

Tags und Links