Ich benutze Node.js und q-Bibliothek.Ist es möglich, Wert von .resolve() außerhalb des Geltungsbereichs. Then() zurückgegeben werden?
Ich habe einen Code, der wie folgt aussieht:
checkIfThingExists(function(idForAThing){
if(idForAThing){
updateThingData(idForAThing);
} else {
createThing(function(idForAThing){
updateThingData(idForAThing);
});
}
})
Wie Sie sehen, ich brauche updateThingData zu nennen(); zweimal.
Gibt es einen Weg, wie ich Versprechungen verwenden kann, updateThingData()
nur einmal anrufen, zum Beispiel so etwas? Natürlich funktioniert das nicht und idForAThing
ist immer undefined
, wenn die if-Anweisung lautet:
checkIfThingExists(function(idForAThing){
if(!idForAThing){
createThing().then(function(newIdForAThing){
idForAThing = newIdForAThing
})
}
updateThingData(idForAThing);
})
Nein, es ist nicht möglich, den Wert vor dem 'then' Rückruf zu bekommen, das ist der ganze Sinn verspricht. Sie können [jedoch ein Versprechen bedingt verwenden und asynchron fortfahren] (https://stackoverflow.com/a/39621747/1048572). – Bergi