Middle+
/** * `asyncAuth(callback)` функциясы callback кабыл алат, ага * ката (биринчи аргумент) жана маалыматтар * бекендден (экинчи аргумент) өткөрүлүшү мүмкүн. * asyncAuth((error, data) => {}); * * Сиз `auth()` функциясын иштеп чыгышыңыз керек, * ал `asyncAuth()` чакырып, бирок Promise кайтарат. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * `tryAuth()` функциясы `auth()` колдонуп, жана ката болсо, * N кошумча аракет кылат. * Бардык аракеттер ийгиликсиз болсо, акыркы катаны кайтарат. * * @returns {Promise} */ function tryAuth(n) { }
sobes.tech AI
AIден жооп
tryAuth функциясы auth()-ду чакырышы керек жана ката болсо, N жолу кайталаш керек. Бардык аракеттер ийгиликсиз болсо, акыркы катаны кайтаруу керек. Мына async/await колдонуу менен мисал:
async function tryAuth(n) {
let lastError;
for (let i = 0; i < n; i++) {
try {
const data = await auth();
return data; // Ийгиликтүү натыйжа
} catch (error) {
lastError = error; // Катаны сактоо
}
}
throw lastError; // Бардык аракеттер ийгиликсиз болду
}
Эгер async/await колдонгусу келбесе, аны promiseлердин чынжыры аркылуу да ишке ашырууга болот, бирок async/await кодду окуу оңой кылат.