Conceito da função de retorno de chamada: Uma função de retorno de chamada é uma função chamada através de um ponteiro de função. Se você passar no ponteiro (endereço) da função como um argumento para outra função, quando esse ponteiro é usado para chamar a função que aponta, dizemos que esta é uma função de retorno de chamada.
Um retorno de chamada é uma função que é passada como um argumento para outra função e é executada após a conclusão da função pai.
Razões para o uso de funções de retorno de chamada: você pode separar o chamador do Callee. O chamador não se importa com quem é o chamador.
Considere um exemplo como este:
Se a parte inferior e o alto nível de um projeto forem coordenados por diferentes funcionários. Pessoal inferior, eu preciso de você.
A equipe subjacente disse: Fornecerei dados e como exibir e processar é o seu negócio Dados e então você será você mesmo.
A cópia do código é a seguinte:
// Os dados representam a fonte de dados fornecida pela camada subjacente, e funcname representa a função de chamada da camada superior
função (dados, funcname) {
1.Data pertence ao caso 1 e é tratada pela camada subjacente;
2.Data pertence ao caso 2. É processado pelo alto nível.
.....
}
Posso não ter deixado claro ainda, podemos ver um exemplo e entender tudo de uma vez
A cópia do código é a seguinte:
// Se a fonte de dados fornecida for um número inteiro, que é a pontuação de um aluno, quando num <= 0, é processado pela camada subjacente e quando n> 0, é processado pela camada superior.
// Copie a seguinte função e salve -a para 1.js
função f (num, retorno de chamada) {
if (num <0) {
alerta ("Chame a função de baixo nível para processar!");
alerta ("A pontuação não pode ser negativa, erro de entrada!");
} else if (num == 0) {
alerta ("Chame a função de baixo nível para processar!");
alerta ("O aluno pode não ter feito o exame!");
}outro{
alerta ("Ligue para o processamento de funções de alto nível!");
ligar de volta();
}
}
A cópia do código é a seguinte:
// Salve o seguinte arquivo test.html no mesmo diretório que 1.js:
<!
"http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv = "content-type" content = "text/html; charset = gb2312">
<script src = "1.js" type = "text/javascript"> </script>
<title> unt intitulado Documento </title>
<script type = "text/javascript">
function test () {
var p = document.getElementById ("pp");
pp.innerText = "";
var num = document.getElementById ("score").
f (num, function () {// função de processamento de alto nível anônimo
se (num <60) alerta ("falhou!");
caso contrário, se (num <= 90) alerta ("A geração é excelente!");
else Alert ("Excelentes resultados para esta geração!");
pp.innertext = "por 1978 QQ558064!"
}
</script>
</head>
<Body>
<p>
Exemplo de função de retorno de chamada: Quando a pontuação do aluno é a pontuação <= 0, é processada pela camada subjacente;
</p>
Por favor, insira as pontuações do aluno <input type = "text" id = "score">
<input type = "button" onclick = "test ()" value = "Olhe para o resultado">
<p id = "pp"> </p>
</body>
</html>
Execute este arquivo e você pode ver o efeito