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);
});