Verspricht es6 und superagent
Ich bin versucht, es6 promises mit superagent. Ich bin versucht, eine Funktion aufzurufen, hat ein superagent Anfrage verpackt im inneren.
Request.post(buildReq).then(res => {
if (res.ok) {//process res}
});
Hier ist die Funktion Verpackung superagent
static post(params) {
superagent
.post(params.url)
.send(params.payload)
.set('Accept', 'application/json')
.end((error, res) => {
return this.Promise.resolve(res);
})
.bind(this);
}
Ich bin immer ein Fehler
enter code here Uncaught TypeError: Cannot read property 'then' of undefined
Wenn ich die Rückgabe der Funktion zu
static post(params) {
return Promise.resolve(superagent
.post(params.url)
.auth(params.auth.username, params.auth.password)
.send(params.payload)
.set('Accept', 'application/json')
.end((error, res) => {
return this.Promise.resolve(res);
})
);
}
Sieht es aus wie die Daten zurückgegeben, die in mein browser dev tools, aber ich Schaffe es nicht, innerhalb der .dann-Funktion. Wie kann ich die Antwort von der Verheißung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es egal, was du bist zurück aus der
end
callback-Methode, wie Sie asynchron ausgeführt, wenn Sie habe als Antwort bekommen und das Ergebnis der callback-Ausführung ist nirgends verwendet. Schauen hier und hier in den source-code.end
Methode gibtthis
, also in Ihrem zweiten Beispiel bist du der Lösungsuperagent
keine Antwort. Um eine Reaktion zu erhalten Ihrerpost
Methode muss sieht wie folgt aus:Manchmal Sie möchten, um zu vermeiden, dass eine Einrückung verursacht durch
new Promise(...)
dann können Sie direktPromise.reject
undPromise.resolve
.Dies ist eine weitere consise version, in Fall, dass Sie brauche es für eine Menge von Anfragen
Mit ES6, die Sie verwenden können, async/await mit Versprechen und Generator support: