Sobes.tech
Middle+

/** * Funkcia `asyncAuth(callback)` prijíma callback, do ktorého * je možné odovzdať chybu (ako prvý argument) a údaje * zo servera (ako druhý argument). * asyncAuth((error, data) => {}); * * Musíte implementovať funkciu `auth()`, * ktorá volá `asyncAuth()`, ale vracia Promise. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * Funkcia `tryAuth()` používa `auth()` a v prípade chyby * robí N ďalších pokusov. * Ak všetky zlyhajú, vráti poslednú chybu. * * @returns {Promise} */ function tryAuth(n) { }

sobes.tech AI

Odpoveď od AI

Funkcia tryAuth by mala volať auth() a v prípade chyby opakovať až N krát. Ak všetky pokusy zlyhajú, vrátiť poslednú chybu. Tu je príklad implementácie s použitím async/await:

async function tryAuth(n) {
  let lastError;
  for (let i = 0; i < n; i++) {
    try {
      const data = await auth();
      return data; // Úspešný výsledok
    } catch (error) {
      lastError = error; // Zapamätať si chybu
    }
  }
  throw lastError; // Všetky pokusy zlyhali
}

Ak nechcete používať async/await, môžete to implementovať aj cez reťazec promise-ov, ale async/await robí kód prehľadnejším.