Sobes.tech
Middle+

/** * `asyncAuth(callback)` funksiyası callback qəbul edir, ona * xəta (birinci arqument) və məlumatlar * backend-dən (ikinci arqument) keçə bilər. * asyncAuth((error, data) => {}); * * Siz `auth()` funksiyasını həyata keçirməlisiniz, * bu `asyncAuth()`-u çağırır, amma Promise qaytarır. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * `tryAuth()` funksiyası `auth()`-u istifadə edir və, xəta baş verərsə, * N əlavə cəhd edir. * Bütün cəhdlər uğursuz olarsa, son xətanı qaytarır. * * @returns {Promise} */ function tryAuth(n) { }

sobes.tech Süni İntellekt

AI-dan cavab

tryAuth funksiyası auth()-u çağırmalı və xəta baş verərsə, N dəfə təkrar etməlidir. Əgər bütün cəhdlər uğursuz olarsa, son xətanı geri qaytarmalıdır. Budur async/await istifadə edərək nümunə tətbiqi:

async function tryAuth(n) {
  let lastError;
  for (let i = 0; i < n; i++) {
    try {
      const data = await auth();
      return data; // Uğurlu nəticə
    } catch (error) {
      lastError = error; // Xətanı yadda saxla
    }
  }
  throw lastError; // Bütün cəhdlər uğursuz oldu
}

Əgər async/await istifadə etmək istəmirsinizsə, onu promise zənciri ilə də həyata keçirmək olar, lakin async/await kodu daha oxunaqlıdır.