Wie promoten Sie die Anfrage richtig?
Bluebird promisifaction ist ein wenig Magie, und request
ist ein ziemliches Durcheinander (es ist eine Funktion, die verhält sich wie ein Objekt mit Methoden).
Das spezifische Szenario ist ganz einfach: ich habe eine request-Instanz mit aktivierten cookies, die über einen cookie jar (nicht mit request
's globalen cookie-handler). Wie kann ich effektiv promisify es, und alle die Methoden, die es unterstützt?
Im Idealfall würde ich mag in der Lage sein:
- nennen
request(url)
-> Versprechen - nennen
request.getAsync(url)
-> Versprechen - nennen
request.postAsync(url, {})
-> Versprechen
Scheint es, als ob Promise.promisifyAll(request)
unwirksam ist (so wie ich immer bin "postAsync ist nicht definiert").
InformationsquelleAutor der Frage Madara Uchiha | 2015-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten die folgenden arbeiten:
Beachten Sie, dass dies bedeutet, dass
request
ist nicht eine Kostenlose Funktion, da promisification arbeitet mit prototype-Methoden, da diethis
ist im Vorfeld nicht bekannt. Es funktioniert nur in neueren Versionen von bluebird. Wiederholen Sie es, wenn Sie brauchen, um, wenn die Verzweigung des request-Objekts für cookies.Wenn Sie mit Bluebird v3, werden Sie wollen, verwenden Sie die
multiArgs
option:Dies ist, weil der Rückruf zur Anfrage
(err, response, body)
: das Standard-Verhalten von Bluebird v3 ist nur auf den ersten Erfolg Wert-argument (d.h.response
) und ignorieren Sie die anderen (d.h.body
).InformationsquelleAutor der Antwort Benjamin Gruenbaum
können Sie die Anfrage-Versprechen Modul.
Installieren Sie das Modul und Sie können die Anfrage in Versprechen Stil.
InformationsquelleAutor der Antwort Arvind Sridharan