Tudo o que preciso fazer é executar uma função de retorno de chamada quando minha execução atual da função terminar.
function LoadData()
{
alert('The data has been loaded');
//Call my callback with parameters. For example,
//callback(loadedData , currentObject);
}
Um consumidor para esta função deve ser assim:
object.LoadData(success);
function success(loadedData , currentObject)
{
//Todo: some action here
}
Como faço para implementar isso?
javascript
Amgad Fahmi
fonte
fonte
object.LoadData(success)
A chamada deve ser posterior àfunction success
definição. Caso contrário, você receberá um erro informando que a função não está definida.Respostas:
Na verdade, seu código funcionará como está, apenas declare seu retorno de chamada como argumento e você poderá chamá-lo diretamente usando o nome do argumento.
O básico
Isso chamará
doSomething
, o que chamaráfoo
, o que alertará "as coisas estão aqui".Observe que é muito importante passar a referência de função (
foo
), em vez de chamar a função e passar seu resultado (foo()
). Na sua pergunta, você faz isso corretamente, mas vale a pena destacar porque é um erro comum.Coisas mais avançadas
Às vezes, você deseja chamar o retorno de chamada para que ele veja um valor específico para
this
. Você pode fazer isso facilmente com acall
função JavaScript :Você também pode passar argumentos:
Às vezes, é útil passar os argumentos que você deseja fornecer ao retorno de chamada como uma matriz, em vez de individualmente. Você pode usar
apply
para fazer isso:fonte
setTimeout()
. A resposta é encerrar o retorno de chamada em um fechamento:doSomething(function(){foo('this','should','work')})
É uma boa prática garantir que o retorno de chamada seja uma função real antes de tentar executá-lo:
fonte
if(typeof callback == "function")
terá o mesmo resultado.callback &&
...Meus 2 centavos. O mesmo, mas diferente ...
fonte
fonte
==============================================
==============================================
O resultado é:
fonte
Se você deseja executar uma função quando algo é feito. Uma de uma boa solução é ouvir eventos. Por exemplo, implementarei
Dispatcher
umaDispatcherEvent
classe com ES6 e, em seguida:Expedidor:
DispatcherEvent:
Feliz codificação!
p / s: Meu código está ausente, lida com algumas exceções de erro
fonte
fonte
Ao chamar a função de retorno de chamada, poderíamos usá-la como abaixo:
consumingFunction(callbackFunctionName)
Exemplo:
Este é o Codepend com exemplo completo.
fonte
Algumas das respostas, embora corretas, podem ser um pouco difíceis de entender. Aqui está um exemplo em termos leigos:
O retorno de chamada significa que "Jake" é sempre adicionado aos usuários antes de exibir a lista de usuários
console.log
.Fonte (YouTube)
fonte
Experimentar:
Funções são de primeira classe em JavaScript ; você pode simplesmente passar por eles.
fonte