Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Dernière révision Les deux révisions suivantes | ||
devweb:javascript [18-03-2014 23:17] edmc73 |
devweb:javascript [12-05-2015 11:54] edmc73 |
||
---|---|---|---|
Ligne 82: | Ligne 82: | ||
[doSomething, | [doSomething, | ||
In summary, if you have asynchronous functions that you want to execute syncronously, | In summary, if you have asynchronous functions that you want to execute syncronously, | ||
+ | |||
+ | ==== Exemple plus complexe ==== | ||
+ | |||
+ | Supposons 4 fonctions qui exécutent de l' | ||
+ | |||
+ | <code javascript> | ||
+ | function update_var1(){ | ||
+ | updated_var1=false; | ||
+ | $.ajax({...}).done(function(){ | ||
+ | // du code | ||
+ | updated_var1=true; | ||
+ | }); | ||
+ | } | ||
+ | </ | ||
+ | Ici on sait que tant que la variable updated_var1 est false, la ré^pnse ajax n'a pas été reçu. | ||
+ | |||
+ | Comme on a 4 fonctions, on va créer une fonction regroupant tout ça avec un callback | ||
+ | <code javascript> | ||
+ | function update_all_var(callback){ | ||
+ | update_var1(); | ||
+ | update_var2(); | ||
+ | update_var3(); | ||
+ | update_var4(); | ||
+ | | ||
+ | var interval = setInterval(function () { | ||
+ | if(updated_var1 && updated_var2 && updated_var3 && updated_var4){ | ||
+ | clearInterval(interval); | ||
+ | callback(); | ||
+ | } | ||
+ | }, 100); | ||
+ | }</ | ||
+ | Plutot que de faire une boucle infini qui fait généralement planter le navigateur, on utilise un setInterval qui va ici exécuter une fonction anonyme toutes les 100ms.\\ | ||
+ | Si nos 4 variables updated... sont true, alors nos 4 appels ajax ont répondu, on arrête l' | ||
+ | |||
+ | Y'a plus qu'a inclure ce code dans le main | ||
+ | <code javascript> | ||
+ | update_all_var(function(){ | ||
+ | update_resultat(); | ||
+ | }); | ||
+ | </ | ||
Ligne 88: | Ligne 128: | ||
* https:// | * https:// | ||
+ | |||
+ | ===== Réécrire l'url sans recharger la page ===== | ||
+ | |||
+ | <code javascript> | ||
+ | if(history.pushState) | ||
+ | history.pushState({}, | ||
+ | </ | ||
+ | |||
+ | ===== Les prototypes ===== | ||
+ | |||
+ | http:// | ||
+ |