рд╢реБрдн рджрд┐рди, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЛ рд╕реБрдЦрдЬрд┐рдВрджрд░ рдЕрд░реЛрдбрд╝рд╛ рдХрд╛ рд▓реЗрдЦ
"рдЕрдВрдбрд░рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ рдкреНрд░реЙрдорд┐рд╕ рдЗрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред
рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓реЗрдЦрдХ рд╕реЗ: рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдерд╛ред рдХреГрдкрдпрд╛, рдЕрдЧрд░ рдЙрд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрдиреЗ рдореЗрдВ рдорджрдж рдХреА рд╣реИ, рддреЛ рдореВрд▓ рд▓реЗрдЦ рдкрд░ рдЬрд╛рдиреЗ рдФрд░ рд▓реЗрдЦрдХ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдордд рдмрдиреЛ! рдореБрдЭреЗ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреА!
рдЙрд╕реА рд▓реЗрдЦрдХ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ редрдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ES6 рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреИрд╕реЗ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзред
рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо "рдХреЙрд▓рдмреИрдХ рдирд░рдХ" рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдХреНрд▓реАрдирд░, рдЕрдзрд┐рдХ рдкрдардиреАрдп рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд░реЗрдВрдЧреЗ:
getData(function(x){ console.log(x); getMoreData(x, function(y){ console.log(y); getSomeMoreData(y, function(z){ console.log(z); }); }); });
рдпрд╣рд╛рдВ, рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реЗ
рдЧреЗрдЯрдбрд╛рдЯрд╛ () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛
рд╣реВрдВ , рдЬреЛ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░, рдореИрдВ
getMoreData () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛
рд╣реВрдВ , рдкрд┐рдЫрд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛
рд╣реВрдВ , рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рдЗрд╕реЗ рд╣рдо "рдХреЙрд▓рдмреИрдХ рдирд░рдХ" рдХрд╣рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдмреИрдХ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рдЕрдВрджрд░ рдирд┐рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЖрдВрддрд░рд┐рдХ рдХреЙрд▓рдмреИрдХ рдЗрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рд╣рдо рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрд░реЛрдХреНрдд рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
getData() .then((x) => { console.log(x); return getMoreData(x); }) .then((y) => { console.log(y); return getSomeMoreData(y); }) .then((z) => { console.log(z); });
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓реЗ рдХреЙрд▓рдмреИрдХ рдЙрджрд╛рд╣рд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреНрдпрд╛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реЛ рдЧрдпрд╛ рд╣реИред
рд╡рд╛рджреЗ рдХреНрдпрд╛ рд╣реИрдВ?
рдПрдХ рд╡рд╛рджрд╛ (рд╡рд╛рджрд╛) рдПрдХ рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдореВрд▓реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╕рд░реНрд╡рд░ рд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЙрдорд┐рд╕ рд╣рдореЗрдВ рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрди рд╕рднреА рддрдХрдиреАрдХреА рдЪреАрдЬреЛрдВ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рд╡рд╛рджреЛрдВ рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рджреЗрдЦреЗрдВред
рдкреНрд░реЙрдорд┐рд╕ рд╕реНрдЯреЗрдЯреНрд╕
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рд╡рд╛рджрд╛, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдПрдХ рд╡рд╛рджреЗ рдХреА рддрд░рд╣, 3 рд░рд╛рдЬреНрдп рд╣реИрдВред рдпрд╣ 1) рдЕрдирд╕реБрд▓рдЭреЗ (рд▓рдВрдмрд┐рдд), 2) рд╣рд▓ / рд╣рд▓ (рдкреВрд░реНрдг) рдпрд╛ 3) рдЕрд╕реНрд╡реАрдХреГрдд / рдЕрд╕реНрд╡реАрдХреГрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдирд╛рд░рдХреНрд╖рд┐рдд рдпрд╛ рд▓рдВрдмрд┐рдд - рдкреНрд░реЙрдорд┐рд╕ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рдпрд╣реА рд╣реИ, рдпрд╣ рдХреБрдЫ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ)ред
рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдпрд╛ рдкреВрд░реНрдг рд╣реБрдЖ - рдкрд░рд┐рдгрд╛рдо рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рдкреНрд░реЛрдорд┐рд╕ рдиреЗ рд╣рд▓ рдХрд┐рдпрд╛ред рдпрд╣реА рд╣реИ, рдХреБрдЫ рдиреЗ рдЕрдкрдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди) рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЧрдпрд╛ред
рдирд┐рд╖реНрдХрд╛рд╕рд┐рдд - рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░реЛрдорд┐рд╕ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░реЛрдорд┐рд╕ рдФрд░ рдЗрд╕рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рдХреНрдпрд╛ рд╣реИ, рдЖрдЗрдП рд╡рд╛рджреЛрдВ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рднрд╛рдЧ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред
рдкреНрд░реЙрдорд┐рд╕ рдмрдирд╛рдПрдВ
рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдмрдирд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╡рд╛рдХреНрдп рд░рдЪрдирд╛:
const promise = new Promise((resolve, reject) => { ... });
рд╣рдордиреЗ рд╡рд╛рджреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛, рдпрд╣ рдПрдХ рддрд░реНрдХ, рдПрдХ рдХреЙрд▓рдмреИрдХ рд▓реЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХрд╛рд░реНрдпрдХрд╛рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ 2 рдХреЙрд▓рдмреИрдХ рд▓реЗрддрд╛ рд╣реИ,
рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ ред
рд╡рд╛рджреЗ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрд╛рд░реНрдпрдХрд╛рд░реА рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдХрд▓реНрдк () , рдФрд░ рдЕрд╕реНрд╡реАрдХрд╛рд░ рджреНрд╡рд╛рд░рд╛
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдХреЗ рдПрдХ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const promise = new Promise((resolve, reject) => { if(allWentWell) { resolve(' !'); } else { reject('- '); } });
рд╕рдВрдХрд▓реНрдк () рдФрд░
рдЕрд╕реНрд╡реАрдХрд╛рд░ () рдПрдХ рддрд░реНрдХ рд▓реЗрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдПрдХ рд╕рдВрдЦреНрдпрд╛, рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдПрдХ рд╕рд░рдгреА рдпрд╛ рдПрдХ рд╡рд╕реНрддреБ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЖрдЗрдП рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ рд╡рд╛рджреЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
const promise = new Promise((resolve, reject) => { const randomNumber = Math.random(); setTimeout(() => { if(randomNumber < .6) { resolve(' !'); } else { reject('- '); } }, 2000); });
рдпрд╣рд╛рдБ рдореИрдВрдиреЗ Promis constructor рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ Promise рдмрдирд╛рдпрд╛ред рдПрдХ рд╡рд╛рджрд╛ рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ 2 рд╕реЗрдХрдВрдб рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ 6 рд╕реЗ рдХрдо рд╣реИ рдФрд░ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдПрдХ рд╡рд╛рджрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛
рдЬрд╛рддрд╛ рд╣реИ ред
рдЬрдм рдПрдХ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд▓рдВрдмрд┐рдд рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп
рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдЧрд╛ред
2 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж, рдЯрд╛рдЗрдорд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╛рджрд╛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдорд╛рди
рд╕рдорд╛рдзрд╛рди рдпрд╛
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдлрд╝рдВрдХреНрд╢рди
рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдиреАрдЪреЗ рджреЛ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рд╕рдлрд▓ рд╕рдорд╛рдкрди:

рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░:
рдиреЛрдЯ: рд╡рд╛рджрд╛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЧреЗ рдХреЙрд▓
() рдпрд╛
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд╛рджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
const promise = new Promise((resolve, reject) => { resolve('Promise resolved');
рдЪреВрдВрдХрд┐
рд╕рдВрдХрд▓реНрдк () рдХреЛ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рдЕрдм рд╡рд╛рджреЗ рдХреА рд╕реНрдерд┐рддрд┐ "рдкреВрд░реНрдг" рд╣реИред
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреА рдХреЙрд▓
() рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд╛рджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧреАред
рдкреНрд░реЛрдорд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рджреЗ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ, рдЕрдм рдкрд╣рд▓реЗ рд╕реЗ рдмрдиреЗ рд╡рд╛рджреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдиреЗрдВред рд╣рдо
рддрддреНрдХрд╛рд▓реАрди () рдФрд░
рдХреИрдЪ () рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ API рдХрд╛ рдбреЗрдЯрд╛ рдХреНрд╡реЗрд░реА рдХрд░рдирд╛, рдЬреЛ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
.then () рд╕рд┐рдВрдЯреИрдХреНрд╕: рд╡рд╛рджрд╛ред рд╕рдлрд▓рддрд╛ (рдЕрд╕рдлрд▓, рдЕрд╕рдлрд▓рддрд╛, рд╡рд╛рдкрд╕реА)successCallback рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рд╡рд╛рджрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ
рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдореВрд▓реНрдп рд╣реИ
() ред
рдЕрд╕рдлрд▓рддрд╛ рдХреЛ
рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдпрд╣ рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рдореВрд▓реНрдп рд╣реИ
() ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
const promise = new Promise((resolve, reject) => { const randomNumber = Math.random(); if(randomNumber < .7) { resolve(' !'); } else { reject(new Error('- ')); } }); promise.then((data) => { console.log(data);
рдпрджрд┐ рд╡рд╛рджреЗ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ
рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдХреЛ
рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдФрд░ рдпрджрд┐ рд╡рд╛рджреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ
рд╡рд┐рдлрд▓рддрд╛ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде
рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред
.рдХреИрдЪ () рд╕рд┐рдВрдЯреИрдХреНрд╕: рд╡рд╛рджрд╛.рдХреИрдЪ (рд╡рд┐рдлрд▓рддрд╛)рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП
рдХреИрдЪ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣
рддрдм () рд╡рд┐рдзрд┐ рдХреЙрд▓рдмреИрдХ рдХреЗ рдЕрдВрджрд░
рд╡рд┐рдлрд▓рддрд╛ рдХреЙрд▓рдмреИрдХ рдХреЗ рдЕрдВрджрд░ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реИред
const promise = new Promise((resolve, reject) => { reject(new Error('- ')); }); promise .then((data) => { console.log(data); }) .catch((error) => { console.log(error);
рд╡рд╛рджрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛
рддрддреНрдХрд╛рд▓реАрди () рдФрд░
рдХреИрдЪ () рд╡рд┐рдзрд┐рдпрд╛рдБ рднреА рдПрдХ рдирдпрд╛ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдЬрд┐рд╕реЗ рдкрд┐рдЫрд▓реЗ рддрдм () рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрдиреНрдп (рддрдм) рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рд╣рдо рд╡рд╛рджреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рд╡рд╛рджреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const promise1 = new Promise((resolve, reject) => { resolve('Promise1 '); }); const promise2 = new Promise((resolve, reject) => { resolve('Promise2 '); }); const promise3 = new Promise((resolve, reject) => { reject('Promise3 '); }); promise1 .then((data) => { console.log(data);
рддреЛ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?
рдЬрдм
рд╡рд╛рджрд╛ 1 рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
рддрддреНрдХрд╛рд▓реАрди () рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
, рдЬреЛ рд╡рд╛рджрд╛ 2 рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рдЬрдм
рд╡рд╛рджрд╛ 2 рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ,
рддрдм () рдХреЛ рдлрд┐рд░ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░
рд╡рд╛рджрд╛ 3 рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╡рд╛рджрд╛ 3 рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдЧрд▓реЗ
() ,
рдХреИрдЪ () рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ
рд╡рд╛рджрд╛ 3 рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреЛ
рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ ред
рдиреЛрдЯ: рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЪреЗрди рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд╛рджреЗ рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ
рдХреИрдЪ () рд╡рд┐рдзрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдпрджрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдЗрд╕рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реИред
рдЖрдо рдЧрд▓рддреА
рдмрд╣реБрдд рд╕реЗ рдирдП рд▓реЛрдЧ рджреВрд╕рд░реЛрдВ рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рд╡рд╛рджреЗ рдХрд░рдХреЗ рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const promise1 = new Promise((resolve, reject) => { resolve('Promise1 '); }); const promise2 = new Promise((resolve, reject) => { resolve('Promise2 '); }); const promise3 = new Promise((resolve, reject) => { reject('Promise3 '); }); promise1.then((data) => { console.log(data);
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╢реИрд▓реА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдХрдо рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд╛рджреЗ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рджреВрд╕рд░реЗ рдХреЗ рдЕрдВрджрд░ рдбрд╛рд▓ рджреЗрдВред
Promise.all ()
рдпрд╣ рд╡рд┐рдзрд┐ рд╡рд╛рджреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реЗрддреА рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬрд┐рд╕реЗ рддрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╕рд░рдгреА рдХреЗ рдЕрдВрджрд░ рд╕рднреА рд╡рд╛рджреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣реА рдПрдХ рд╡рд╛рджрд╛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const promise1 = new Promise((resolve, reject) => { setTimeout(() => { resolve('Promise1 '); }, 2000); }); const promise2 = new Promise((resolve, reject) => { setTimeout(() => { resolve('Promise2 '); }, 1500); }); Promise.all([promise1, promise2]) .then((data) => console.log(data[0], data[1])) .catch((error) => console.log(error));
рдпрд╣рд╛рдВ,
рддрдм () рдХреЗ рдЕрдВрджрд░ рддрд░реНрдХ рдПрдХ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рджреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ
Promise.all () рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХреЗрд╡рд▓ рдЕрдЧрд░ рд╕рднреА рд╡рд╛рджреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)
рд╡рд╛рджреЗ рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рд╕рд░рдгреА рдореЗрдВ рдкрд╣рд▓реЗ рд╡рд╛рджреЗ рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг рдХреЗ рд╕рд╛рде рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const promise1 = new Promise((resolve, reject) => { setTimeout(() => { resolve('Promise1 '); }, 2000); }); const promise2 = new Promise((resolve, reject) => { setTimeout(() => { reject('Promise2 '); }, 1500); }); Promise.all([promise1, promise2]) .then((data) => console.log(data[0], data[1])) .catch((error) => console.log(error));
рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд╛рджреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдПрдХ 2 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ 1.5 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рджреВрд╕рд░рд╛ рд╡рд╛рджрд╛ рдЦрд╛рд░рд┐рдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
рд╡рд╛рджрд╛ ( рд╡рд╛рдкрд╕реА
) рд╕реЗ рд▓реМрдЯрд╛
рд╡рд╛рджрд╛ рдкрд╣рд▓реЗ рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рд╡рд┐рдзрд┐ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд╛рджреЗ рд╣реЛрдВ рдФрд░ рдЖрдк рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рд╡рд╛рджреЗ рдХрдм рдкреВрд░реЗ рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ API рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрдм рд╕рднреА рдЕрдиреБрд░реЛрдз рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВред
рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕
Promise.all () рд╣реИ , рдЬреЛ рд╕рднреА рд╡рд╛рджреЛрдВ рдХреЗ рд╕рдлрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рд╡рд╛рджреЛрдВ рдХреА рд╕рд░рдгреА рдореЗрдВ рдкрд╣рд▓реА рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдкрд░ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред
рдкреНрд░реЙрдорд┐рд╕.реНрд░реЗрд╕ ()
рдпрд╣ рд╡рд┐рдзрд┐ рд╡рд╛рджреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬрд┐рд╕реЗ рд╕рд░рдгреА рдореЗрдВ рдкреВрд░рд╛ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдХреЗ рдкреВрд░рд╛ рд╣реЛрддреЗ рд╣реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рдЕрд╕реНрд╡реАрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЕрд╕реНрд╡реАрдХреГрдд рд╡рд╛рджрд╛ рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const promise1 = new Promise((resolve, reject) => { setTimeout(() => { resolve('Promise1 '); }, 1000); }); const promise2 = new Promise((resolve, reject) => { setTimeout(() => { reject('Promise2 '); }, 1500); }); Promise.race([promise1, promise2]) .then((data) => console.log(data))
рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд╛рджреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдПрдХ рдХреЛ 1 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ 1.5 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдкрд╣рд▓рд╛ рд╡рд╛рджрд╛ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рд╡рд╛рджрд╛ (рд╡рд╛рджрд╛) рд╕реЗ рд▓реМрдЯрд╛ рд╣реБрдЖ рд╡рд╛рджрд╛ рджреВрд╕рд░реЗ рд╡рд╛рджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣рд╛рдВ,
рддрдм () рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╡рд╛рдж рдХрд╛ рдореВрд▓реНрдп рд╣реИред
рдирддреАрдЬрддрди,
Promise.race () рдкрд╣рд▓реЗ рд╡рд╛рджреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓реМрдЯреЗ рд╡рд╛рджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рд▓реЗрддрд╛ рд╣реИред
рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓реЗрдЦрдХ рдХреА рдЯрд┐рдкреНрдкрдгреА: рдЗрд╕рд▓рд┐рдП рдирд╛рдо рд╣реАред рджреМрдбрд╝ - рджреМрдбрд╝рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреНрдпрд╛ рд╡рд╛рджреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдХреНрдпрд╛ рдЦрд╛рддреЗ рд╣реИрдВред рд╡рд╛рджреЗ рджреЛ рднрд╛рдЧреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ 1) рдПрдХ рд╡рд╛рджрд╛ рдФрд░ 2 рдмрдирд╛рдПрдБ) рдПрдХ рд╡рд╛рджрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрд╛рд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдм, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд░рд╣рд╛ рд╣реИ!