Ich übersetze meine Frage komplett umkochen noch weiter.nodejs versprechen nur nicht warten
Warum, im folgenden Code, tut x()
zu undefined
zu, anstatt success
der an die Konsole angemeldet ist durch console.log('success');
Die letzte Zeile endet in der Konsole ausgeführt wird; dann wird der Rückruf ausgelöst.
Wie kann ich es so machen x()
gibt den "Erfolg" -Wert zurück, bevor die letzte Zeile ausgeführt wird.
Sogar yF() ergibt undefined
. Then() ist jedoch echo th y: success
.
const promise = require('promise');
const requestify = require('requestify');
function x() {
requestify.get('https://<redacted>/')
.then(function (d) {
console.log('success', d.code);
return 'success';
})
.fail(function (f) {
console.log('fail', f.code);
return 'fail';
});
;
}
var yF = function() {
yP .then(function (th) { console.log("th", th); return th; })
.catch(function (fl) { console.log("fl", fl); return fl; });
}
var yP = new Promise(
function (resolve, reject) {
if (1 == 1) {
resolve("y: success");
} else {
reject(new Error("y: fail"));
}
}
);
console.log("hello", x());
console.log("world", yF());
bitte weiter erklären. Wollen Sie sagen, dass der Code in der then-Klausel von requify.get ausgelöst wird, bevor die Anfrage abgeschlossen ist? – user93
Füllen Sie die Anfrage in der Backed innerhalb dann nach allen Operationen – user93