Moin,
Deine Lösung ist in dem Fall nicht verwendbar. Dein Callback wird aufgerufen, wenn die Schleife abgearbeitet ist. In seinem Fall handelt es sich aber um Promises, also asynchrone ToDos. Das äußere Promise darf erst erfüllt werden, wenn die anderen Promises erfüllt sind. Bezogen auf deine Funktion darf das Callback erst aufgerufen werden, wenn alle asynchronen ToDos ihrerseits ihr Callback aufgerufen haben.
check()
sollte natürlich auch erst aufgerufen werden wenn der asynchrone Task beendet ist, zum Beispoiel im Callback einer MySQL abfrage. Dachte das ist ersichtlich.
var i = 0, k = Object.keys( obj ), v = Object.values( obj ); function check ( b = false ) {
Die Bedeutung von i, k und v kann man sich denken, aber was ist die Aufgabe von b? Dem wird nie ein anderer Wert zugewiesen. Vermutlich hast du dessen Verwendung aus dem Beispiel rausgekürzt. Aber nicht sprechende Variablennamen sind schlecht fürs Verständnis. Wenn break nicht geht, weil es ein reserviertes Wort ist, dann gibt es noch ein paar Synonyme, beispielsweise cancel.
Ob das jetzt b
oder cancel
heißt, wo ist der unterschied? Falls check( true )
aufgerufen wird bricht die Schleife ab und es wird der Callback aufgerufen.
if ( callback !== undefined ) { callback(); }
undefined darf der Callback nicht sein, aber null, 42 oder "foo" sind ok?
Wenn ich jemals einen Intenger oder String als Funktion aufrufen sollte, geb ich dir bescheid. Hm, ja null, doofe Sache, werd ich mal ändern, also ( typeof( callback ) === 'function'
).
Gruß
Jo