Qual é a função de retorno de chamada? Eu realmente não sei como usar e funcionar a função de retorno de chamada JS antes de aprendê -lo. No artigo a seguir, apresentarei a você os alunos o exemplo da minha função de retorno de chamada de aprendizado. Os alunos que precisam saber não devem ter cuidado para não entrar na referência.
Princípio da função de retorno de chamada:
Vou sair agora e vou notificá -lo. "
Este é um processo assíncrono. Durante o processo de "eu vou" (execução da função), "você" pode fazer qualquer coisa ", chega" (a execução da função é concluída) e "notificar você" (retorno de chamada) após o processo de "notificar você" (retorno de chamada) é realizado
exemplo
1. Métodos básicos
<Script Language = "javascript" type = "text/javascript"> function doSomething (retorno de chamada) {//… // Ligue para o chamado BackCallback ('stuff', 'Goes', 'aqui');} função foo (a, b, c) {// eu sou o chamado (a + "" " + b +" " + c); </script>Ou use função anônima
<script linguage = "javascript" type = "text/javascript"> function doSomething (damsg, retorno de chamada) {alert (damsg); if (typeof de retorno de chamada == "function")); } dosomething ("Função de retorno de chamada", function () {alert ("Igual ao formulário de retorno de chamada jQuery!");}); </script>2. Métodos avançados
Método de chamada usando JavaScript
<Script Language = "javascript" type = "text/javascript"> FUNCTION (nome) {this.name = name;} thing.prototype.dosomething = function (retorno de chamada) {// Ligue para o nosso retorno de chamada, mas usando nossa própria instância como contextCallback.Call (this);} function () {alert (este.n. Coisa ('joe'); t.Dosomething (foo); // alerta "Joe" via `foo` </sCript>Passe os parâmetros
<Script Language = "javascript" type = "text/javascript"> coisa de função (nome) {this.name = name;} thing.prototype.dosomething = function (retorno de chamada, saudação) {// chama nossa chamada, mas usando nossa própria instância como contextCall.call (this, salutação);} função = New Thing ('Joe'); T.Dosomething (foo, 'oi'); // Alerta "Oi Joe" via `foo` </sCript>Passe os parâmetros usando JavaScript
<Script Language = "javascript" type = "text/javascript"> coisa de função (nome) {this.name = name;} thing.prototype.dosomething = function (retorno de chamada) {// chama nosso retorno de chamada, mas usando nossa própria instância como contextCallback.Apply (this, ['Hi', 3, 3, 2, 1]; " + this.name +" " + três +" " + dois +" " + um);} var t = novo ('joe'); t.Dosomething (foo); // Alerta "Oi Joe 3 2 1" via `foo` </sCript>exemplo
// 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) {alert ("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) {alert ("Chame a função de baixo nível para processar!"); alerta ("O aluno pode não ter feito o exame!"); } else {alert ("Chame a função de alto nível para processar!"); ligar de volta(); }}// Salve o seguinte arquivo test.html no mesmo diretório que 1.js:
<! Doctype html public "-// w3c // dtd html 4.01 transitória // pt" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv = contentd "> charset = gb2312 "> <script src =" 1.js "type =" text/javascript "> </script> <titter> unt Document </ititle> <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!"); else if (num <= 90) alert ("Excelente resultado!"); else ALERT ("Excelente resultado!");}) pp.innerText = "por 1978 QQ55844! } </script> </ad Head> <body> <p> Função de retorno de chamada Exemplo: Quando o aluno pontuar <= 0 pontos, a camada inferior o lidará; Quando a pontuação> 0, a camada superior o lidará. </p> Por favor, digite as pontuações do aluno <input type = "text" id = "score"> <input type = "button" onclick = "test ()" value = "confira os resultados"> <p id = "pp"> </p> </body> </html>A seguir, são apresentadas as adições de outros internautas:
Modo de retorno de chamada em JavaScript:
Como mostrado em:
function writecode (retorno de chamada) {// execute algumas coisas, retorno de chamada (); // ...} function intrucebugs () {// ...Troduce a vulnerabilidade} WRITECODE (INTRDUCEBUGS);Passamos a aplicação da função a Writecode (), para que o WriteCode o execute no momento apropriado (retorne a ligar mais tarde)
Vamos primeiro olhar para um exemplo não tão bom (ele será reformado mais tarde):
// Simule os nós DOM na página de pesquisa e retorne os nós encontrados na matriz uniformemente // Esta função é usada apenas para não encontrar processamento lógico para os nós Dom var findNodes = function () {var i = 100000; // um grande número de loops, var lindes = []; // Use para armazenar o Dom ONSENSEN ENCONTRADO FINTIND; while (i) {i -= 1; nós.push (encontrado); } Retornar nós; } // Ocultar todos os nós DOM encontrados var hide = function (nós) {var i = 0, max = modes.length; para (; i <max; i ++) {// Existem colchetes após o encontro de Nodes para indicar a execução imediatamente. Primeiro execute findnodes () e depois execute hide () <hide (findNodes ()); executar função}; nós [i] .style.display = "nenhum"} O método acima é ineficiente. Pensa -se que Hide () deve atravessar os nós da matriz retornados por findNodes () novamente. Como evitar taxas desnecessárias. Não podemos ocultar diretamente o nó de consulta nos findnodes (esta pesquisa pode modificar o acoplamento lógico), portanto, não é mais uma função geral. A solução é usar o modo de retorno de chamada, onde você pode passar a lógica oculta do nó para findnodes () em uma função de retorno de chamada e delegar para executar // refactor findnodes para aceitar uma função de retorno de chamada var findnodes = fucnion (retorno de chamada) {var i = 100000, nós = [], encontrado; // Verifique se a função de retorno de chamada está disponível para retorno de chamada se (Typeof RinBorn! == 'function') {retorno de chamada = false; } while (i) {i -= 1; if (retorno de chamada) {retorno de chamada (encontrado); } modes.push (encontrado); } Retornar nós; } // função de checkback var hide = function (node) {node.style.display = 'nenhum'; } // Encontre o nó subsequente e oculte -o na execução subsequente FindNodes (oculto); // Execute o FindNodes primeiro e depois oculte. Obviamente, a função de retorno de chamada também pode ser criada ao chamar a função principal: findNodes (function (node) {node.style.display = 'none';});