Maison  >  Article  >  interface Web  >  Comment personnaliser une fonction de rappel dans jQuery

Comment personnaliser une fonction de rappel dans jQuery

伊谢尔伦
伊谢尔伦original
2017-06-16 14:59:592227parcourir

Tout d'abord, traduisez "callback" du sens littéral de callback. On peut comprendre qu'il s'agit d'un mécanisme permettant d'appeler des fonctions

Lorsque nous rencontrons un nom, nous pouvons d'abord rechercher sur Baidu. et Google pour voir quelle est l'explication officielle

Voici la définition du rappel de Wikipédia :

un rappel est un morceau de code exécutable qui est passé comme argument à un autre code qui est censé rappeler (exécuter) l'argument à un moment opportun

Traduction difficile : une fonction de rappel est un segment de code exécutable qui est utilisé comme paramètre d'une autre fonction. Ce segment de code est exécuté à un moment opportun <.>

Explication populaire : Traitez la fonction f2 comme un Les paramètres sont passés à la fonction f1 et f2 est exécuté au moment approprié dans f1 (j'utilise f1, f2 dans tous les exemples ci-dessous)

Nous avons donc peut obtenir un modèle de fonction de rappel comme celui-ci

function f1(f2) {    //f1要执行的一些代码
    if (f2 && typeof(f2) === "function") { //对f2做判断是否存在并且是一个函数        f2();
    }
}
Il convient de noter ici que f2 dans les deux paramètres est un pointeur vers la fonction f2, donc f2 ne peut pas être suivi de parenthèses

, et f2 à l'intérieur de f1 doivent être suivis de crochets car nous devons appeler et exécuter f2 à ce moment-là, donc pour écrire f2()

instancions ce modèle et voyons son résultat d'exécution

声明函数function f1(f2) {
alert("我是f1");if (f2 && typeof(f2) === "function") { //写上判断是个好习惯f2()
}
}
执行
f1(function() {
alert("我是f2");
})
结果://"我是f1",“我是f2”
Regardons l'ensemble du processus d'exécution de la fonction. Lors de l'appel de f1(function(){alert( "I am f2");})

transmet d'abord une fonction anonyme à f1(), et cette fonction anonyme est le paramètre f2 dans la fonction déclarée. Le programme javascript est exécuté de haut en bas alert("I am f1"); puis exécuté f2();

Peut-on l'écrire comme ça ?

function f1(f2) {    alert("我是f1");    if (f2 && typeof(f2) === "function") {  
        f2()
    }    alert("我又是f1 哈哈");
}
执行
f1(function(){
    alert("我是f2");
})//结果:我是f1 ,我是f2,我又是1 哈哈
En regardant la définition du rappel, nous pouvons effectuer un rappel dans Nous l'exécutons quand nous voulons l'exécuter, sans affecter le flux d'exécution de f1 lui-même

Mais par souci d'encapsulation et de beauté , la plupart d'entre nous l'écrirons comme ceci

function f1(f2){ 
if (f2 && typeof(f2) === "function") {  
settimeOut(function(){f2()},1000) ;//f1执行1s后f2执行}
}function f2(){/**/}
f1(f2);
En fait, la fonction de rappel n'est pas si compliquée en js, la fonction peut être traitée comme un paramètre ordinaire. Tant que () est ajouté après, cela signifie appeler cette fonction.

Regardez à nouveau l'exemple suivant

$(function(){
    function funcname(param){
        //do something
         
        //callback
        param.callback();    
    }
 
    //调用
    funcname({
        callback:function(){
            alert(&#39;callback do&#39;); 
        }   
    });      
});
On peut également voir dans l'exemple ci-dessus qu'en fait, chaque fois qu'une fonction est définie, la fonction est ajoutée à la pile du conteneur, et l'index est le nom de la fonction. La valeur par défaut est sous la fenêtre, vous pouvez donc y lancer la chaîne, et vous pouvez également appeler cette fonction de rappel via la chaîne sous la fenêtre.

Avec les paramètres, vous pouvez utiliser la méthode ci-dessus.

Par exemple, un exemple dans jQuery

$("#div1").fadeOut("fast",functin(){
    $("#div2").fadeIn("slow");
})
permet de masquer rapidement #div puis d'afficher progressivement #div2. Il existe un grand nombre de fonctions de rappel dans jQuery

<.> et il y a une méthode spéciale de rappel pour gérer

Enfin, laissez-moi parler des rappels que j'ai récemment utilisés dans des projets
jQuery.Callbacks = function( options ) {...}

La fonction de l'application hybride est probablement que j'envoie une requête à ios et ios renvoie Donnez-moi les données json puis j'analyse les données renvoyées et les insère dans la page Web

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn