Node.js
Évitez le rappel de l'enfer
Recherche…
Module asynchrone
La source est disponible pour téléchargement à partir de GitHub. Alternativement, vous pouvez installer en utilisant npm:
$ npm install --save async
En plus d'utiliser Bower:
$ bower install async
Exemple:
var async = require("async");
async.parallel([
function(callback) { ... },
function(callback) { ... }
], function(err, results) {
// optional callback
});
Module asynchrone
Heureusement, des bibliothèques comme Async.js existent pour essayer de limiter le problème. Async ajoute une couche mince de fonctions au-dessus de votre code, mais peut considérablement réduire la complexité en évitant l’imbrication de rappel.
Il existe de nombreuses méthodes d'assistance dans Async qui peuvent être utilisées dans différentes situations, telles que les séries, les parallèles, les cascades, etc. Chaque fonction a un cas d'utilisation spécifique.
Aussi bon que Async est, comme tout, ce n'est pas parfait. Il est très facile de se laisser emporter par la combinaison de séries, de parallèles, pour toujours, etc. Veillez à ne pas optimiser prématurément. Juste parce que quelques tâches asynchrones peuvent être exécutées en parallèle ne signifie pas toujours qu'elles le devraient. En réalité, Node étant un seul thread, l'exécution de tâches en parallèle lors de l'utilisation d'Async ne génère que peu ou pas de performances.
La source est disponible pour téléchargement sur https://github.com/caolan/async . Alternativement, vous pouvez installer en utilisant npm:
$ npm install --save async
En plus d'utiliser Bower:
$ bower install async
Exemple de chute d'eau d'Async:
var fs = require('fs');
var async = require('async');
var myFile = '/tmp/test';
async.waterfall([
function(callback) {
fs.readFile(myFile, 'utf8', callback);
},
function(txt, callback) {
txt = txt + '\nAppended something!';
fs.writeFile(myFile, txt, callback);
}
], function (err, result) {
if(err) return console.log(err);
console.log('Appended text!');
});