Ich habe zwei einfache Funktionen: Eine Funktion, die eine promise
Wie warten Sie auf die Callback-Funktion?
function showBootbox(){
return new Promise(function (resolve, reject) {
bootbox.confirm('Are you sure ? ',resolve);
});
}
und eine Funktion gibt, die ein callback
verwendet.
function getBootboxValue(callback) {
showBootbox().then(function (result) {
callback(result);
});
}
Jetzt ist das Problem, dass ich nicht auf den Rückruf warten kann, um zu beenden.
if(condition){
getBootboxValue(function(result){
if(result){
//code
}
});
}
console.log('a');
console.log(a)
wird ausgeführt, bevor ich das Ergebnis des Versprechens bekam. Wie kann ich dies tun, ohne async/await
Mechanismus zu verwenden?
Vielen Dank im Voraus!
"Ich kann nicht auf den Rückruf warten, bis Sie fertig sind", aber Sie müssen. Wenn etwas asynchron läuft, "infiziert" es den Rest Ihres Codes. Nichts (nicht einmal async/erwarten, das ist nur ein Zucker, um Versprechen zu halten) könnte asynchrone Code magisch in sync verwandeln. Sie müssen also den Log-Teil in den Callback verschieben oder eine Promise von 'getBootboxValue' zurückgeben. –
Natürlich wird das 'console.log' zuerst ausgeführt, es ist außerhalb des Callbacks. Wenn Sie möchten, dass danach etwas läuft, muss es innerhalb dieses Callbacks sein. – BenShelton
@BenShelton, ich habe meinen Code aktualisiert. Ich habe den Rückruf innerhalb einer Bedingung und dann habe ich viel Code dann –