Middle+
/** * La fonction `asyncAuth(callback)` accepte un callback, dans lequel on peut * passer une erreur (premier argument) et des données * du backend (deuxième argument). * asyncAuth((error, data) => {}); * * Vous devez implémenter la fonction `auth()`, * qui appelle `asyncAuth()`, mais retourne une promesse. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * La fonction `tryAuth()` utilise `auth()` et, en cas d'erreur, * effectue N tentatives supplémentaires. * Si toutes échouent, elle retourne la dernière erreur. * * @returns {Promise} */ function tryAuth(n) { }
sobes.tech IA
Réponse de l'IA
La fonction tryAuth doit appeler auth() et, en cas d'erreur, réessayer jusqu'à N fois. Si toutes les tentatives échouent, renvoyer la dernière erreur. Voici un exemple d'implémentation utilisant async/await :
async function tryAuth(n) {
let lastError;
for (let i = 0; i < n; i++) {
try {
const data = await auth();
return data; // Résultat réussi
} catch (error) {
lastError = error; // Mémoriser l'erreur
}
}
throw lastError; // Toutes les tentatives ont échoué
}
Si vous ne souhaitez pas utiliser async/await, vous pouvez l'implémenter avec une chaîne de promesses, mais async/await rend le code plus lisible.