рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рджреЗ рдХреЛ рд╕рдордЭрдирд╛

рд╢реБрдн рджрд┐рди, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЛ рд╕реБрдЦрдЬрд┐рдВрджрд░ рдЕрд░реЛрдбрд╝рд╛ рдХрд╛ рд▓реЗрдЦ "рдЕрдВрдбрд░рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ рдкреНрд░реЙрдорд┐рд╕ рдЗрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред



рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓реЗрдЦрдХ рд╕реЗ: рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдерд╛ред рдХреГрдкрдпрд╛, рдЕрдЧрд░ рдЙрд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрдиреЗ рдореЗрдВ рдорджрдж рдХреА рд╣реИ, рддреЛ рдореВрд▓ рд▓реЗрдЦ рдкрд░ рдЬрд╛рдиреЗ рдФрд░ рд▓реЗрдЦрдХ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдордд рдмрдиреЛ! рдореБрдЭреЗ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреА!

рдЙрд╕реА рд▓реЗрдЦрдХ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ ред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред 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'); //   reject('Promise rejected'); //       }); 

рдЪреВрдВрдХрд┐ рд╕рдВрдХрд▓реНрдк () рдХреЛ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рдЕрдм рд╡рд╛рджреЗ рдХреА рд╕реНрдерд┐рддрд┐ "рдкреВрд░реНрдг" рд╣реИред рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреА рдХреЙрд▓ () рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд╛рджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧреАред

рдкреНрд░реЛрдорд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рджреЗ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ, рдЕрдм рдкрд╣рд▓реЗ рд╕реЗ рдмрдиреЗ рд╡рд╛рджреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдиреЗрдВред рд╣рдо рддрддреНрдХрд╛рд▓реАрди () рдФрд░ рдХреИрдЪ () рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ 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); //  '  !' }, (error) => { console.log(error); //   } ); 

рдпрджрд┐ рд╡рд╛рджреЗ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдФрд░ рдпрджрд┐ рд╡рд╛рджреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╡рд┐рдлрд▓рддрд╛ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред

.рдХреИрдЪ () рд╕рд┐рдВрдЯреИрдХреНрд╕: рд╡рд╛рджрд╛.рдХреИрдЪ (рд╡рд┐рдлрд▓рддрд╛)

рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрдЪ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рддрдм () рд╡рд┐рдзрд┐ рдХреЙрд▓рдмреИрдХ рдХреЗ рдЕрдВрджрд░ рд╡рд┐рдлрд▓рддрд╛ рдХреЙрд▓рдмреИрдХ рдХреЗ рдЕрдВрджрд░ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реИред

 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); // Promise1  return promise2; }) .then((data) => { console.log(data); // Promise2  return promise3; }) .then((data) => { console.log(data); }) .catch((error) => { console.log(error); // Promise3  }); 

рддреЛ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?


рдЬрдм рд╡рд╛рджрд╛ 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); // Promise1  promise2.then((data) => { console.log(data); // Promise2  promise3.then((data) => { console.log(data); }).catch((error) => { console.log(error); // Promise3  }); }).catch((error) => { console.log(error); }) }).catch((error) => { console.log(error); }); 

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╢реИрд▓реА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдХрдо рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд╛рджреЗ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рджреВрд╕рд░реЗ рдХреЗ рдЕрдВрджрд░ рдбрд╛рд▓ рджреЗрдВред

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)); // Promise2  

рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд╛рджреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдПрдХ 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)) // Promise1  .catch((error) => console.log(error)); 

рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд╛рджреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдПрдХ рдХреЛ 1 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ 1.5 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдкрд╣рд▓рд╛ рд╡рд╛рджрд╛ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рд╡рд╛рджрд╛ (рд╡рд╛рджрд╛) рд╕реЗ рд▓реМрдЯрд╛ рд╣реБрдЖ рд╡рд╛рджрд╛ рджреВрд╕рд░реЗ рд╡рд╛рджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣рд╛рдВ, рддрдм () рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╡рд╛рдж рдХрд╛ рдореВрд▓реНрдп рд╣реИред

рдирддреАрдЬрддрди, Promise.race () рдкрд╣рд▓реЗ рд╡рд╛рджреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓реМрдЯреЗ рд╡рд╛рджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рд▓реЗрддрд╛ рд╣реИред

рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓реЗрдЦрдХ рдХреА рдЯрд┐рдкреНрдкрдгреА: рдЗрд╕рд▓рд┐рдП рдирд╛рдо рд╣реАред рджреМрдбрд╝ - рджреМрдбрд╝

рдирд┐рд╖реНрдХрд░реНрд╖


рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреНрдпрд╛ рд╡рд╛рджреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдХреНрдпрд╛ рдЦрд╛рддреЗ рд╣реИрдВред рд╡рд╛рджреЗ рджреЛ рднрд╛рдЧреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ 1) рдПрдХ рд╡рд╛рджрд╛ рдФрд░ 2 рдмрдирд╛рдПрдБ) рдПрдХ рд╡рд╛рджрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрд╛рд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдпрд╣ рд╕рдм, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд░рд╣рд╛ рд╣реИ!

Source: https://habr.com/ru/post/hi439746/


All Articles