Je reçois vraiment un mal de tête en essayant d'utiliser la fonctionnalité async/wait lors de l'utilisation pour les boucles. J'utilise la version de Node.js: v8.6.0Avoir des problèmes Async/Await Promise - Javascript/Nodejs
En résumé, j'essaie de récupérer plusieurs lignes d'une base de données, puis de les placer toutes dans un tableau et de renvoyer ce tableau.
Je l'ai fait avec succès en utilisant des rappels, mais je n'arrive pas à comprendre comment le faire avec async/await.
Mon code actuel en utilisant callbacks qui fonctionne
function main(db) {
gatherDates(db, function(dates) {
console.log(dates); //successful
});
}
function gatherDates(db, callback) {
const dates = [];
let today = getToday();
dates.push(today);
let dateQuery = "SELECT date FROM event_dates";
db.query(dateQuery, (err, newDates) => {
for(let row of newDates) {
dates.push(row.date);
}
callback(dates);
});
}
Le code qui ne réussit pas essayer d'utiliser async/Attendent
async function main(db) {
let dates = await gatherDates(db);
console.log(dates); //undefined or not all of the data
}
function gatherDates(db) {
const dates = [];
let today = getToday();
dates.push(today);
let dateQuery = "SELECT date FROM event_dates";
db.query(dateQuery, (err, newDates) => {
for(let row of newDates) {
dates.push(row.date);
}
return Promise.resolve(dates);
});
}
Je googled essayer de trouver une solution, je essayé d'utiliser plusieurs promesses, puis en appelant return Promise.all(promises);
à la fin, mais cela n'a pas fonctionné. J'ai essayé return new Promise((resolve, reject)=>resolve(dates))};
. J'ai regardé Promise et async/wait des tutoriels et des exemples qui fonctionnent habituellement pour moi mais quand il s'agit de faire défiler des données, c'est là que j'ai un problème. Je sais qu'il y a quelque chose de fondamental qui me manque et toute aide est appréciée. Je vous remercie!
fonctionnait très bien! et maintenant je comprends mieux les promesses. Merci – nd510