Sobes.tech
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.