Junior
Ի՞նչ է Promise.race-ը։
sobes.tech AI
Պատասխան AI-ից
Promise.race — դա մեթոդ է, որը վերադարձնում է նոր խոստում (promise): Այս նոր խոստումը լուծվում է կամ մերժվում է նույն արժեքով (կամ պատճառով), ինչ առաջին խոստումը, որը փոխանցված է (հաճախ զանգվածի տեսքով), որը ավարտվել է:
Աշխատանքի սկզբունքները:
- Մուտք: Ընդունում է ինտերատոր (օրինակ, զանգված) խոստումների:
- Սպասում: Սկսում է "մրցույթ" բոլոր խոստումների միջև:
- Արդյունք: Երբ որևէ խոստում, որը փոխանցված է, ավարտվում է (լուծվում կամ մերժվում),
Promise.raceանմիջապես ավարտվում է նույն արդյունքով: - Անտեսում: Բոլոր մյուս խոստումների արդյունքները, որոնք ավարտվում են ավելի ուշ, ամբողջությամբ անտեսվում են:
Օգտագործման օրինակ:
// Օրինակ խոստում, որը լուծվում է 1 վայրկյան հետո
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Առաջին'), 1000));
// Օրինակ խոստում, որը լուծվում է 500 միլիսեկունդ հետո
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Երկրորդ'), 500));
// Օրինակ խոստում, որը մերժվում է 300 միլիսեկունդ հետո
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Սխալ')), 300));
Promise.race([promise1, promise2, promise3])
.then((value) => {
console.log(value); // Ցուցադրում է 'Սխալ'
})
.catch((error) => {
console.error(error.message); // Հաշվարկում է սխալը 'Սխալ'
});
Այս օրինակով, promise3 ավարտվում է առաջինը (մերժվում), հետևաբար Promise.race ավարտվում է սխալով, և կատարվում է .catch բլոկը: Եթե promise2 ավարտվեր առաջինը (օրինակ, 10 միլիսեկունդում), ապա Promise.race կլուծվեր արժեքով 'Երկրորդ', և կկատարվեր .then բլոկը:
Տիպիկ օգտագործման սցենարներ՝
- Ասինխրոն գործողության ժամանակային սահմանափակման իրականացում:
- Ամենաարագ տվյալների աղբյուրից արդյունք ստացում՝ մի քանի հնարավորից:
- Կոնկուրենտ ասինխրոն գործողությունների չեղարկում: