Sobes.tech
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); // Կիրականացվի, եթե առաջինը տեղի ունենա ժամանակային սահմանափակումը
});