Junior
Ներկայացրեք, թե ինչ է Promise.race-ը և ինչպես է այն օգտագործվում JavaScript-ում։
sobes.tech AI
Պատասխան AI-ից
Promise.race ընդունում է ինտերատիվ օբյեկտ խոստումների և վերադարձնում է նոր խոստում: Այս նոր խոստումը լուծվում կամ մերժվում է, երբ առաջին խոստումը, որը գտնվում է ինտերատիվ օբյեկտում, լուծվում կամ մերժվում է: Նոր խոստման արդյունքը կլինի առաջին ավարտված խոստման արդյունքը կամ պատճառը:
Օգտագործվում է՝
- Ընտրել ամենաարագ պատասխանը մի քանի ասինխրոն գործողություններից:
- Հաշվարկել ժամանակային սահմանափակումներ ասինխրոն գործողությունների համար:
Օրինակ՝ ժամանակային սահմանափակում:
// Ֆունկցիա, որը ստեղծում է խոստում, որը մերժվում է որոշ ժամանակ անց
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error(`Timeout after ${ms}ms`));
}, ms);
});
}
// Ասինխրոն գործողություն, որը կարող է լինել դանդաղ
function fetchData() {
return new Promise(resolve => {
// Երկար գործողության սիմուլյացիա
setTimeout(() => {
resolve('Տվյալները հաջողությամբ ստացվեցին');
}, 2000); // Ենթադրենք, որ այս գործողությունը տևում է 2 վայրկյան
});
}
// Promise.race օգտագործելով fetchData-ին ժամանակային սահմանափակում ավելացնելու համար
Promise.race([
fetchData(), // Մեր գործողությունը
timeout(1000) // 1 վայրկյան ժամանակային սահմանափակում
])
.then(result => {
console.log(result); // Կիրականացվի, եթե fetchData-ն ավարտվի մինչև ժամանակային սահմանափակումը
})
.catch(error => {
console.error(error.message); // Կիրականացվի, եթե առաջինը տեղի ունենա ժամանակային սահմանափակումը
});