Middle+
/** * `asyncAuth(callback)` funkcija pieņem callback, kurā * var tikt nodota kļūda (pirmais arguments) un dati * no backend (otrais arguments). * asyncAuth((error, data) => {}); * * Jums jāievieš `auth()` funkcija, * kas izsauc `asyncAuth()`, bet atgriež Promise. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * `tryAuth()` funkcija izmanto `auth()` un, ja ir kļūda, * veic N papildu mēģinājumus. * Ja visi mēģinājumi neizdodas, atgriež pēdējo kļūdu. * * @returns {Promise} */ function tryAuth(n) { }
sobes.tech AI
Atbilde no AI
tryAuth funkcija irsauk auth() un, gad kļūda gadījumā, atkārtotu līdz N reizēm. Ja visi mēģinājumi neizdodas, atgriezt pēdējo kļūdu. Šeit ir piemērs, kā to realizēt, izmantojot async/await:
async function tryAuth(n) {
let lastError;
for (let i = 0; i < n; i++) {
try {
const data = await auth();
return data; // Veiksmīgs rezultāts
} catch (error) {
lastError = error; // Saglabāt kļūdu
}
}
throw lastError; // Visas mēģinājumi neizdevās
}
Ja nevēlaties izmantot async/await, to var realizēt ar solījumu ķēdi, bet async/await padara kodu lasāmāku.