Wenn ich es richtig verstanden habe, willst du etwas in dieser Richtung haben:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
|
function myFunction() {
var myValues = []
function myCallback() {
// do stuff with myValues
}
asyncStuff().then(myCallback);
return myValues;
}
|
DAs
return der äußeren Funktion wird bereits vor dem Aufruf von myCallback durchgeführt. Das liegt daran, weil der Aufruf (mit Callbackübergabe) zwar bereits ausgeführt wurde, allerdings stößt es einen asynchron im Hintergrund laufenden Prozess an, der asynchron abgearbeitet wird. Das übergebene Callback wird dadurch erst viel zu spät aufgerufen und es lässt sich nicht mit einem Return bewerkstelligen.
Stattdessen könntest du entweder einen Parameter entgegen nehmen, über den wiederum ein Callback übergeben werden kann, dem das Ergebnis übergeben wird, oder du könntest selbst ein Promise oder etwas vergleichbares zurückliefern, dem dann die Callbacks angehangen werden können. (Da der Aufruf der Asynchronen Methode bereits ein Promise liefert, könntest du vielleicht sogar diesen verwenden.) Was du letztendlich machst ist im wesentlichen Geschmackssache.