Concepto de función de devolución de llamada: una función de devolución de llamada es una función llamada a través de un puntero de función. Si pasa el puntero (dirección) de la función como un argumento a otra función, cuando este puntero se usa para llamar a la función a la que señala, decimos que esta es una función de devolución de llamada.
Una devolución de llamada es una función que se pasa como un argumento a otra función y se ejecuta después de que su función principal se haya completado.
Razones para usar funciones de devolución de llamada: puede separar la persona que llama de la Callee. La persona que llama no le importa quién es la persona que llama.
Considere un ejemplo como este:
Si el personal inferior y alto de un proyecto está coordinado por el personal diferente. Personal inferior, lo necesito.
El personal subyacente dijo: le proporcionaré datos y cómo mostrarlo y procesarlo es su negocio. Datos y luego será usted mismo.
La copia del código es la siguiente:
// Los datos representan la fuente de datos proporcionada por la capa subyacente, y FuncName representa la función de llamada de la capa superior
función (datos, funcname) {
1. Los datos pertenecen al caso 1 y se maneja por la capa subyacente;
2. Los datos pertenecen al caso 2. Es procesado por el alto nivel.
...
}
Puede que aún no lo haya dejado en claro, podemos ver un ejemplo y entenderlo todo a la vez
La copia del código es la siguiente:
// Si la fuente de datos proporcionada es un entero, que es la puntuación de un estudiante, cuando num <= 0, es procesada por la capa subyacente, y cuando n> 0, la capa superior la procesa.
// Copiar la siguiente función y guárdela en 1.js
función f (num, devolución de llamada) {
if (num <0) {
alerta ("¡Llame a la función de bajo nivel para procesar!");
alerta ("La puntuación no puede ser negativa, error de entrada!");
} else if (num == 0) {
alerta ("¡Llame a la función de bajo nivel para procesar!");
alerta ("¡El estudiante puede no haber tomado el examen!");
}demás{
alerta ("¡Llame al procesamiento de funciones de alto nivel!");
llamar de vuelta();
}
}
La copia del código es la siguiente:
// Guardar el siguiente archivo test.html en el mismo directorio que 1.js:
<!
"http://www.w3.org/tr/html4/loose.dtd">
<html>
<Evista>
<meta http-oquiv = "content-type" content = "text/html; charset = gb2312">
<script src = "1.js" type = "text/javaScript"> </script>
<title> un documento titulado </title>
<script type = "text/javaScript">
función test () {
var p = document.getElementById ("pp");
pp.inntext = "";
var num = document.getElementById ("puntaje"). valor;
F (num, function () {// Función de procesamiento de alto nivel anónimo
if (num <60) alerta ("fallido!");
else if (num <= 90) alerta ("¡La generación es excelente!");
más alerta ("¡Excelentes resultados para esta generación!");
pp.inntext = "Por desde 1978 QQ558064!"
}
</script>
</ablo>
<Body>
<p>
Ejemplo de función de devolución de llamada: cuando la puntuación del alumno es una puntuación <= 0, es procesada por la capa subyacente;
</p>
Ingrese los puntajes del alumno <input type = "text" id = "score">
<input type = "button" onClick = "test ()" value = "mire el resultado">
<p id = "pp"> </p>
</body>
</html>
Ejecute este archivo y puede ver el efecto