Wszystko, co muszę zrobić, to wykonać funkcję zwrotną, gdy zakończy się wykonywanie mojej bieżącej funkcji.
function LoadData()
{
alert('The data has been loaded');
//Call my callback with parameters. For example,
//callback(loadedData , currentObject);
}
Konsument dla tej funkcji powinien wyglądać następująco:
object.LoadData(success);
function success(loadedData , currentObject)
{
//Todo: some action here
}
Jak to zaimplementować?
javascript
Amgad Fahmi
źródło
źródło
object.LoadData(success)
połączenie musi być późniejfunction success
zdefiniowane. W przeciwnym razie pojawi się błąd informujący, że funkcja nie jest zdefiniowana.Odpowiedzi:
W rzeczywistości twój kod będzie działał właściwie tak, jak jest, po prostu zadeklaruj swoje wywołanie zwrotne jako argument i możesz wywołać go bezpośrednio, używając nazwy argumentu.
Podstawy
To zadzwoni
doSomething
, co zadzwonifoo
, co ostrzeże „rzeczy idą tutaj”.Zauważ, że bardzo ważne jest przekazanie funkcji referencji (
foo
), zamiast wywoływania funkcji i przekazywania jej wyniku (foo()
). W swoim pytaniu robisz to poprawnie, ale warto to zaznaczyć, ponieważ jest to częsty błąd.Bardziej zaawansowane rzeczy
Czasami chcesz zadzwonić do oddzwonienia, aby dostrzegła określoną wartość
this
. Możesz to łatwo zrobić za pomocącall
funkcji JavaScript :Możesz także przekazać argumenty:
Czasami przydatne jest przekazanie argumentów, które mają zostać zwrócone jako tablica, a nie pojedynczo. Możesz użyć
apply
do tego:źródło
setTimeout()
. Odpowiedzią jest zamknięcie oddzwaniania w zamknięciu:doSomething(function(){foo('this','should','work')})
Dobrą praktyką jest upewnienie się, że funkcja zwrotna jest faktyczną funkcją przed próbą jej wykonania:
źródło
if(typeof callback == "function")
będzie miał ten sam wynik.callback &&
...Moje 2 centy Taki sam ale inny...
źródło
źródło
==============================================
==============================================
Wynik to:
źródło
Jeśli chcesz wykonać funkcję, gdy coś jest zrobione. Jednym z dobrych rozwiązań jest słuchanie wydarzeń. Na przykład, ja zaimplementować
Dispatcher
, aDispatcherEvent
klasy z ES6, a następnie:Dyspozytor:
DispatcherEvent:
Miłego kodowania!
p / s: Brakuje mojego kodu, obsłuż niektóre wyjątki błędów
źródło
źródło
Podczas wywoływania funkcji oddzwonienia możemy użyć jej w następujący sposób:
consumingFunction(callbackFunctionName)
Przykład:
To jest Codepend z pełnym przykładem.
źródło
Niektóre odpowiedzi, choć poprawne, mogą być nieco trudne do zrozumienia. Oto przykład w kategoriach laika:
Oddzwonienie oznacza, że „Jake” jest zawsze dodawany do użytkowników przed wyświetleniem listy użytkowników
console.log
.Źródło (YouTube)
źródło
Próbować:
Funkcje są pierwszorzędne w JavaScript ; możesz je po prostu przekazać.
źródło