Middle+
/** * De functie `asyncAuth(callback)` accepteert een callback, waarin * een fout (als eerste argument) en gegevens * van de backend (als tweede argument) kunnen worden doorgegeven. * asyncAuth((error, data) => {}); * * Je moet de functie `auth()` implementeren, * die `asyncAuth()` aanroept, maar een Promise teruggeeft. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * De functie `tryAuth()` gebruikt `auth()` en, in geval van fout, * voert N extra pogingen uit. * Als alle pogingen falen, geeft het de laatste fout terug. * * @returns {Promise} */ function tryAuth(n) { }
sobes.tech AI
Antwoord van AI
De functie tryAuth moet auth() aanroepen en bij een fout proberen te herhalen tot N keer. Als alle pogingen falen, geef dan de laatste fout terug. Hier is een voorbeeldimplementatie met async/await:
async function tryAuth(n) {
let lastError;
for (let i = 0; i < n; i++) {
try {
const data = await auth();
return data; // Succesvol resultaat
} catch (error) {
lastError = error; // Bewaar de fout
}
}
throw lastError; // Alle pogingen mislukt
}
Als je geen gebruik wilt maken van async/await, kun je het ook implementeren via een keten van promises, maar async/await maakt de code beter leesbaar.