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 | ||
|
code_language:javascript [2025/12/17 23:50] 216.73.216.214 ancienne révision (2025/11/02 15:29) restaurée |
code_language:javascript [2025/12/17 23:53] (Version actuelle) 216.73.216.214 ancienne révision (2025/11/02 15:51) restaurée |
||
|---|---|---|---|
| Ligne 1571: | Ligne 1571: | ||
| Documentation setTimeout: https:// | Documentation setTimeout: https:// | ||
| - | === Les autres " | + | === Les autres " |
| - | Il existe d' | ||
| - | * setInterval : fonctionne comme " | ||
| - | * Documentation https:// | ||
| - | * setImmediate: | ||
| - | * Documentation: | ||
| - | |||
| - | === Fonction asynchrone par nature === | ||
| - | * Les evenements: Sont toujours exécutés de façon asynchrone. | ||
| - | * Les input/ | ||
| - | * Quelques autres... (callBack, Promise, et les Async/ | ||
| - | |||
| - | === CallBacks === | ||
| - | |||
| - | Une callback est simplement une fonction que vous définissez. Le principe de la callback est de la passer en paramètre d'une fonction asynchrone. Une fois que la fonction asynchrone a fini sa tâche, elle va appeler notre fonction callback en lui passant un résultat. | ||
| - | |||
| - | exemple: | ||
| - | <code JavaScript [enable_line_numbers=" | ||
| - | element.addEventListener(' | ||
| - | // Do something here ... | ||
| - | }); | ||
| - | </ | ||
| - | |||
| - | Les callbacks sont faciles à comprendre et à utiliser, mais elles souffrent d'un gros problème de lisibilité du code, via ce qu'on appelle le callback hell. En effet, on se retrouve régulièrement dans des situations où on va imbriquer plusieurs couches de callbacks , rendant le code difficile à lire et pouvant générer des erreurs. | ||
| - | |||
| - | |||
| - | <code JavaScript [enable_line_numbers=" | ||
| - | elt.addEventListener(' | ||
| - | mysql.connect(function(err) { | ||
| - | mysql.query(sql, | ||
| - | fs.readFile(filePath, | ||
| - | mysql.query(sql, | ||
| - | // etc ... | ||
| - | }); | ||
| - | }); | ||
| - | }); | ||
| - | }); | ||
| - | }); | ||
| - | </ | ||
| - | C'est bien beau de gérer du code asynchrone, mais rien ne vous garantit que tout se soit bien passé. Il nous faut donc un mécanisme pour savoir si une erreur est survenue ! | ||
| - | |||
| - | === Gerer les erreurs callbacks === | ||
| - | Pour gérer les erreurs avec les callbacks, la méthode la plus utilisée est de prendre 2 paramètres dans notre callback. Le 2e paramètre est notre donnée et le 1er est l' | ||
| - | |||
| - | Si on reprend l' | ||
| - | |||
| - | exemple: | ||
| - | <code JavaScript [enable_line_numbers=" | ||
| - | fs.readFile(filePath, | ||
| - | if (err) { | ||
| - | throw err; | ||
| - | } | ||
| - | // Do something with data | ||
| - | }); | ||
| - | </ | ||
| - | |||
| - | === Promise === | ||
| - | Lorsqu' | ||
| - | |||
| - | Cette promesse est en fait un objet " | ||
| - | |||
| - | Lorsque l'on récupère une " | ||
| - | |||
| - | Exemple: | ||
| - | |||
| - | <code JavaScript [enable_line_numbers=" | ||
| - | functionThatReturnsAPromise() | ||
| - | .then(function(data) { | ||
| - | // Do somthing with data | ||
| - | }) | ||
| - | .catch(function(err) { | ||
| - | // Do something with error | ||
| - | }); | ||
| - | </ | ||
| - | Dans l' | ||
| - | |||
| - | Le gros avantage est que l'on peut aussi chaîner les " | ||
| - | |||
| - | exemple: | ||
| - | <code JavaScript [enable_line_numbers=" | ||
| - | returnAPromiseWithNumber2() | ||
| - | .then(function(data) { // Data is 2 | ||
| - | return data + 1; | ||
| - | }) | ||
| - | .then(function(data) { // Data is 3 | ||
| - | throw new Error(' | ||
| - | }) | ||
| - | .then(function(data) { | ||
| - | // Not executed | ||
| - | }) | ||
| - | .catch(function(err) { | ||
| - | return 5; | ||
| - | }) | ||
| - | .then(function(data) { // Data is 5 | ||
| - | // Do something | ||
| - | }); | ||
| - | </ | ||
| - | |||
| - | Dans l' | ||
| - | La première fonction " | ||
| - | Puis, dans cette fonction on retourne " | ||
| - | Puis, dans le " | ||
| - | De ce fait, le " | ||
| - | |||
| - | " | ||