Intermédiaire
Soit les 2 fonctions suivantes getMovie
et run
:
const Qajax = require('qajax'); // Librairie basée sur Q, permettant de faire des promesses en HTTP
// Retourne une promesse HTTP sur l'url en paramètre
function getMovie(url) {
return Qajax.getJSON(url);
}
// Démarre le générateur en paramètre et récupère une promesse
function run(generator) {
var iterator = generator();
function go(result) {
result.value.then(function(value) {
go(iterator.next(value))
});
}
go(iterator.next());
}
Que va t-il se passer lorsque le code suivant sera appelé :
run(function *() {
let mov1 = yield getMovie('https://api.myjson.com/bins/3hn4g'); // {id:1, title:'Back to the future'}
let mov2 = yield getMovie('https://api.myjson.com/bins/1gro0'); // {id:2, title:'Matrix'}
let mov3 = yield getMovie('https://api.myjson.com/bins/53igg'); // {id:3, title:'Star Wars'}
console.log(mov1.id, mov1.title);
console.log(mov2.id, mov2.title);
console.log(mov3.id, mov3.title);
});
Auteur: Jean-marie CléryStatut : PubliéeQuestion passée 786 fois
Modifier
Questions similairesPlus de questions sur NodeJS
10
Comment définir une variable globale avec Node.js?6
Analyser une chaîne de requête en un objet en NodeJS4
Laquelle de ces 4 solutions pour servir un fichier très volumineux sera la plus optimisée en termes de _ressources serveur_ et de _vitesse de chargement pour le client_?3
Un serveur de chat SocketIO simple, couplé à Express.2
Comment obtenir le résultat de 3 fonctions asynchrones en NodeJS