Promise, await/async ou callback
monpseudolionel
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à tous,
Depuis quelques années, je n'ai pas développé en JS et j'ai besoin de reprendre un script tout simple mais il ne exécute pas dans l'ordre.
Le voici :
**Modifié par la modération pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE
Je me retrouve avec 1 puis 4 puis 2 puis 3
Je sais c'est l'erreur classique de JS en synchrone / asynchrone et j'imagine que c'est tout simple à changer mais j'ai passé l'après midi a essayer de retrouver comment faire.
Une bonne âme pourrait m'aider ?
Merci
Depuis quelques années, je n'ai pas développé en JS et j'ai besoin de reprendre un script tout simple mais il ne exécute pas dans l'ordre.
Le voici :
getNotificationSounds2(serialOrName, idSound, callback) { console.log("1"); let result=""; this.getNotificationSounds(serialOrName, (err, res) => { console.log("2"); res.notificationSounds.forEach(function(item, index) { if (item['id'] == idSound) { result=item; console.log("3"); } }); }); console.log("4"); return result; }
**Modifié par la modération pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE
Je me retrouve avec 1 puis 4 puis 2 puis 3
Je sais c'est l'erreur classique de JS en synchrone / asynchrone et j'imagine que c'est tout simple à changer mais j'ai passé l'après midi a essayer de retrouver comment faire.
Une bonne âme pourrait m'aider ?
Merci
1 réponse
Salut,
avec la callback,
Avec un promesse:
avec la callback,
function getNotificationSounds2(serialOrName, idSound, callback) { console.log("1"); this.getNotificationSounds(serialOrName, (err, res) => { if (err) { console.log(err); return; } res.notificationSounds.forEach(function (item, index) { if (item['id'] == idSound) { callback(item); } }); }); } getNotificationSounds2('plock', 1, (result) => { console.log(result); });
Avec un promesse:
const getNotificationSounds2 = (serialOrName, idSound) => new Promise((resolve, reject) => { this.getNotificationSounds(serialOrName, (err, res) => { if (err) { reject(err); } res.notificationSounds.forEach((item, index) => { if (item['id'] == idSound) { resolve(item); } }); reject(new Error("Not found")); }); }); getNotificationSounds2('plock', 1) .then((result) => { console.log(result); }).catch((err) => { console.log(err); });