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 761 fois
Modifier
Questions similairesPlus de questions sur NodeJS
8
Comment définir une variable globale avec Node.js?4
Analyser une chaîne de requête en un objet en NodeJS3
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