Какво изобщо са обещанията?
Асинхронният код може да се обработва с обещания. Те приемат функция, известна като изпълнител, като параметър. Когато се създаде обещание, изпълнителят автоматично се изпълнява асинхронно и връща стойност, в случай че е изпълнено, в противен случай връща причината за отхвърляне:
нека example_promise = новообещание ( ( разрешавам, отхвърлям ) => {разрешавам ( „Обещанието е изпълнено“ ) ;
} ) ;
пример_обещание. тогава ( r => конзола. дневник ( r ) ) ;
Асинхронен характер на обещанията:
нека example_promise = новообещание ( ( разрешавам, отхвърлям ) => {
разрешавам ( „Обещанието е изпълнено“ ) ;
} ) ;
пример_обещание. тогава ( r => конзола. дневник ( r ) ) ;
конзола. дневник ( '1,2,3...' ) ;
Как да използвам метода Promise.race()?
Предайте итерируем от обещания към метода Promise.race() и получете неговата върната стойност в променлива:
нека prom1 = новообещание ( ( разрешавам, отхвърлям ) => {
setTimeout ( ( ) => разрешавам ( „Обещанието е изпълнено“ ) , 500 ) ;
} ) ;
нека prom2 = новообещание ( ( разрешавам, отхвърлям ) => {
setTimeout ( ( ) => отхвърлям ( „Обещанието не може да бъде разрешено“ ) , 250 ) ;
} ) ;
нека темп = обещание. раса ( [ бал 1, бал 2 ] ) ;
темп. улов ( причина => конзола. дневник ( причина ) ) ;
В този пример имахме две обещания. Първото обещание беше разрешено след 500 ms, а второто обещание беше отхвърлено след 250 секунди. Тъй като второто обещание беше първото, което беше разрешено или отхвърлено, то беше върнато от метода Promise.race().
Ако аргументът, подаден на метода Promise.race(), е празен итерируем, тогава методът ще върне вечно чакащо обещание:
нека темп = обещание. раса ( [ ] ) ;конзола. дневник ( темп ) ;
Ако аргументът iterable има някакви необещаващи стойности или обещания, които вече са изпълнени или отхвърлени, тогава методът ще се задоволи с първата стойност в масива:
нека p1 = новообещание ( ( разрешавам, отхвърлям ) => {разрешавам ( „P1 е решен“ ) ;
} ) ;
нека p2 = новообещание ( ( разрешавам, отхвърлям ) => {
разрешавам ( „P2 е решен“ ) ;
} ) ;
нека темп = обещание. раса ( [ p1,p2 ] ) ;
темп. тогава ( стойност => конзола. дневник ( стойност ) ) ;
Проверка на метода Promise.race() за разрешени и отхвърлени обещания. Този метод има и друга алтернатива, която е методът Promise.any(), който може да се използва само за проверка за изпълнени обещания.
Заключение
Методът Promise.race() се използва за получаване на първото обещание, което е или изпълнено, или отхвърлено от повторение на обещания. Обещанието, което се изпълнява или отхвърля най-рано, е върнатата стойност на Promise.race(). Написването предостави задълбочено вникване в метода Promise.race().