рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрдЪреНрдЪреЗ рднреА рд╕рдордЭреЗрдВрдЧреЗ: async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рд╕рд░рд▓ рд╡рд┐рд╡рд░рдг рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд╛рджреЗ

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЬреИрдХ рдкрд╛рд░реНрдбреА рдХреЗ рд▓реЗрдЦ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ Async / Await рдФрд░ рд╡рд╛рджреЗ: рд╕рдордЭрд╛ рдЬреИрд╕реЗ рдЖрдк рдкрд╛рдВрдЪ рд╕рд╛рд▓ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВред

рдЬреЛ рдХреЛрдИ рднреА рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░ рдорд╛рдирддрд╛ рд╣реИ, рдХрд┐рд╕реА рд╕рдордп, рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди, рд╡рд╛рджреЗ, рдпрд╛, рд╣рд╛рд▓ рд╣реА рдореЗрдВ, async / рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЦреЗрд▓ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдРрд╕реЗ рд╕рдордп рдореЗрдВ рдЖрдП рд╣реИрдВ рдЬрдм рдиреЗрд╕реНрдЯреЗрдб рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдерд╛ред

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк, рдореЗрд░реА рддрд░рд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ (рдФрд░ рд╕рд┐рд░реНрдл рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ!), рддреЛ рдЖрдк рдореБрдЭрд╕реЗ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░реА рдХреА рдХрдореА рд╣реИред

рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?


рддрд╕реНрд╡реАрд░ рдПрдХ рд╕реЛрдЪ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ

рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕рд╡рд╛рд▓ рдкреВрдЫрддреЗ рд╣реБрдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ:

  • рдХрдИ рдзрд╛рдЧреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  • рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
  • рдпрд╣ рд╕рдВрдЧрддрд┐ рд╣реИред

рдХреБрдЫ рд╣рдж рддрдХ, рд╕рднреА рд╡рд┐рдХрд▓реНрдк рд╕рд╣реА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдПрдХ рддрдХрдиреАрдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЬрд┐рд╕реЗ рдЖрдк рдЬрд▓реНрдж рд╣реА рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ рдЬрд┐рд╕реЗ рдПрдХ рдмрдЪреНрдЪрд╛ рднреА рд╕рдордЭ рд╕рдХрддрд╛ рд╣реИ ред

рдЬреАрд╡рди рдЙрджрд╛рд╣рд░рдг


рдЪрд┐рддреНрд░ рд╕рдмреНрдЬрд┐рдпреЛрдВ рдФрд░ рд░рд╕реЛрдИ рдХреЗ рдЪрд╛рдХреВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ

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

  1. рдЧрд╛рдЬрд░ рдХреЛ рдХрд╛рдЯ рд▓реЗрдВред
  2. рдкреНрдпрд╛рдЬ рдХреЛ рдХрд╛рдЯ рд▓реЗрдВред
  3. рдкреИрди рдореЗрдВ рдкрд╛рдиреА рдбрд╛рд▓реЗрдВ, рд╕реНрдЯреЛрд╡ рдЪрд╛рд▓реВ рдХрд░реЗрдВ рдФрд░ рдЙрдмрд╛рд▓ рдЖрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред
  4. рдкреИрди рдореЗрдВ рдЧрд╛рдЬрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ 5 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрдВред
  5. рдкреИрди рдореЗрдВ рдкреНрдпрд╛рдЬ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдПрдХ рдФрд░ 10 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдЦрд╛рдирд╛ рдмрдирд╛рдирд╛ред

рдпреЗ рдирд┐рд░реНрджреЗрд╢ рд╕рд░рд▓ рдФрд░ рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдореЗрдВ рд╕реЗ рдПрдХ, рдЗрд╕реЗ рдкрдврд╝ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд╛рдирд╛ рдмрдирд╛рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИ, рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЦрд╛рдирд╛ рдкрдХрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЖрдк рд╕рд╣реА рд╣реЛрдВрдЧреЗ, рдРрд╕рд╛ рдХреНрдпреЛрдВ:

  • рдЪрд░рдг 3, 4 рдФрд░ 5 рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдФрд░ рд╕рдордп рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╢реЗрдл рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ред
  • рдЪрд░рдг 1 рдФрд░ 2 рдЖрдкрдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдПрдХ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡реА рдХреБрдХ рдХреЗ рд▓рд┐рдП рдиреБрд╕реНрдЦрд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  1. рдкрд╛рдиреА рдХреЗ рдПрдХ рдмрд░реНрддрди рдХреЛ рдЙрдмрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред
  2. рдмрд░реНрддрди рдХреЛ рдЙрдмрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╕рдордп, рдЧрд╛рдЬрд░ рдХрд╛рдЯрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред
  3. рдЬрдм рддрдХ рдЖрдк рдЧрд╛рдЬрд░ рдХрд╛рдЯрддреЗ рд╣реИрдВ, рддрдм рддрдХ рдкрд╛рдиреА рдЙрдмрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЧрд╛рдЬрд░ рдбрд╛рд▓реЗрдВред
  4. рдЬрдмрдХрд┐ рдЧрд╛рдЬрд░ рдПрдХ рдкреИрди рдореЗрдВ рдкрдХрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрдпрд╛рдЬ рдХрд╛рдЯ рд▓реЗрдВред
  5. рдкреНрдпрд╛рдЬ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдПрдХ рдФрд░ 10 рдорд┐рдирдЯ рдкрдХрд╛рдирд╛ред

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

рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ, рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ - рдЪрд╛рд╣реЗ рд╡рд╣ рдХрд┐рд╕реА рд╕рд░реНрд╡рд░ рд╕реЗ HTTP рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реЛ рдпрд╛ рдХрд┐рд╕реА рдпреВрдЬрд╝рд░ рдХрд╛ рдПрдХреНрд╢рди рдпрд╛ рдХреБрдЫ рдФрд░ред рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЪрдХреНрд░ рдХреАрдорддреА рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреБрдЫ рдХрд░рдирд╛, рдФрд░ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рдирд╛: рдпрд╣ рдЖрдкрдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреЗрддрд╛ рд╣реИред

рдЕрдм рдЪрд▓реЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдареАрдХ рд╣реИ?


рдЗрд╕рд▓рд┐рдП, рд╕рдмреНрдЬреА рд╕реВрдк рдХреЗ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рдж, рдореИрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдиреБрд╕реНрдЦрд╛ рдХреЗ рдЪрд░рдгреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреВрдВрдЧрд╛ред

рдкрд╣рд▓реЗ, рдЖрдЗрдП рд╕рдордХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдордп рдирд╣реАрдВ рд▓реЗрддреЗ рд╣реИрдВред рдпреЗ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ chopCarrots рдФрд░ chopOnions рдХреЛ chopOnions рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдХреНрд░рд┐рдп рдХрд╛рд░реНрдп (рдФрд░ рд╕рдордп) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рд▓рдВрдмреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдкреВрд░реНрдг рдХреЛрдб рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ [1]ред

 function chopCarrots() { /*   ... */ console.log(" !"); } function chopOnions() { /*   ... */ console.log(" !"); } function addOnions() { console.log("   !"); } function addCarrots() { console.log("   !"); } 

рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреА рд╣реИ: рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рднреА рдкрд░рд┐рдгрд╛рдо (рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕рд╣рд┐рдд) рдХреЛ рд╡рд╛рджреЗ (рдУрдВ) рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ред

рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ, рдЕрд░реНрдерд╛рдд return new Promise(тАж) ;
  • рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рдПрдВ - рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП async рдЬреЛрдбрд╝реЗрдВ, рдЕрд░реНрдерд╛рддреНред async function foo() ;
  • рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред

рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ [2] рд╣реИ, рдЬреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореЗрд░реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдореБрдЦреНрдп рдмрд╛рдд: рдЖрдкрдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╣рдореЗрд╢рд╛ async рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдп, рд╕рдмреНрдЬреА рд╕реВрдк рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг 3-5 рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

 async function letPotKeepBoiling(time) { return; //  ,      } async function boilPot() { return; //  ,       } 

рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдореИрдВрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рддрд╛рдХрд┐ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдЪрд▓рд┐рдд рди рд╣реЛрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ [1]ред

рдпрд╣ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡рд╛рджреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░ рд╕рдХреЗрдВ, рдЖрдк рдмрд╕ await рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 async function asyncFunction() { /*  ... */ } result = await asyncFunction(); 

рддреЛ, рдЕрдм рд╣рдореЗрдВ рдмрд╕ рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 function makeSoup() { const pot = boilPot(); chopCarrots(); chopOnions(); await pot; addCarrots(); await letPotKeepBoiling(5); addOnions(); await letPotKeepBoiling(10); console.log("   !"); } makeSoup(); 

рд▓реЗрдХрд┐рди рд░реБрдХрд┐рдП! рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ! рдЖрдк SyntaxError: await is only valid in async functions рджреЗрдЦреЗрдВрдЧреЗ SyntaxError: await is only valid in async functions рддреНрд░реБрдЯрд┐ SyntaxError: await is only valid in async functions ред рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк async рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕реЗ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдФрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХреЛрдИ рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ! [3]ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдмрд╕ async рдХреЛ makeSoup рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ makeSoup рд╣реИрдВ:

 async function makeSoup() { const pot = boilPot(); chopCarrots(); chopOnions(); await pot; addCarrots(); await letPotKeepBoiling(5); addOnions(); await letPotKeepBoiling(10); console.log("   !"); } makeSoup(); 

рдФрд░ рд╡реЛрдЗрд▓рд╛! рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рдореИрдВ рдмрд┐рдирд╛ boilPot рдХреАрд╡рд░реНрдб рдХреЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди boilPot рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ boilPot , рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЧрд╛рдЬрд░ рдХрд╛рдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреИрди рдХреЛ рдЙрдмрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдХреЗрд╡рд▓ рдкрд╛рдВрдЪрд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ pot рдХреЗ рд╡рд╛рджреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдореЗрдВ рдЧрд╛рдЬрд░ рдХреЛ рдкреИрди рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкрд╛рдиреА рдореЗрдВ рдЙрдмрд╛рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

await рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдЦреИрд░, рдХреБрдЫ рдирд╣реАрдВ ... рддрд░рд╣ ...

makeSoup рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ makeSoup рдЖрдк рдмрд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреБрдЫ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдЬреЛ рдЕрдВрддрддрдГ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛)ред

рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ: рдЖрдк (рдЖрдкрдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рддрд░рд╣) рдХрднреА рднреА рд╡рд╣рд╛рдВ рдмреИрдардирд╛ рдФрд░ рдХрд┐рд╕реА рдЪреАрдЬ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рдЬрдмрдХрд┐ рдЖрдк рдЕрдкрдирд╛ рд╕рдордп рджреВрд╕рд░реА рдЪреАрдЬреЛрдВ рдкрд░ рдмрд┐рддрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЗрд╕рд▓рд┐рдП, рдХреЗрд╡рд▓ рд╕реВрдк рдкрдХрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХреБрдЫ рдФрд░ рдкрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 makeSoup(); makePasta(); 

рдЬрдмрдХрд┐ рд╣рдо letPotKeepBoiling рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рд╕реНрддрд╛ рдкрдХрд╛рдирд╛ред

рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ? Async / рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВ, рд╕рд╣рдордд рд╣реИрдВ?

рдУрд╡рд░рдЯ рд╡рд╛рджреЗ рдХрд╛ рдХреНрдпрд╛?


рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЬреЛрд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд╡рд╛рджреЛрдВ ( рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рдж) рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдУрд░ рдореБрдбрд╝реВрдВрдЧрд╛ред рд╕реНрдкрд╖реНрдЯ рд╡рд╛рджреЛрдВ рд╕реЗ, рд▓реЗрдЦрдХ рд╕реАрдзреЗ рд╡рд╛рджреЛрдВ рдХреЗ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рд╕реЗ рддрд╛рддреНрдкрд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд╛рджреЛрдВ рд╕реЗ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рджрд╛ рдкреНрд░рддрд┐рдлрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ - рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред return new Promise(тАж) ред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ async / рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕реНрд╡рдпрдВ рд╡рд╛рджреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИрдВ ред

рд╕реНрдкрд╖реНрдЯ рд╡рд╛рджреЗ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдкреБрд░рд╛рдиреЗ рд╢реИрд▓реА рдХреЗ рдХреЙрд▓рдмреИрдХ рдФрд░ рдирдП рдПрд╕рд┐рдВрдХреНрд╕ / рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдпреМрди рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмреАрдЪ рд╣реИрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдпреМрди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╣рд┐рдд рд╡рд╛рджреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рдЕрдВрдд рдореЗрдВ, рд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рдж async / рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдирд┐рд░реНрдорд╛рдг рдЖрдпрд╛, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рдж рдЖрдпрд╛ рдерд╛ред

рдХреЙрд▓рдмреИрдХ рдирд░рдХ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╕рдордп рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ [4]:

 function callbackHell() { boilPot( () => { addCarrots(); letPotKeepBoiling(() => { addOnions(); letPotKeepBoiling(() => { console.log("   !"); }, 1000); }, 5000); }, 5000, chopCarrots(), chopOnions() ); } 

рдореИрдВ рдЭреВрда рдирд╣реАрдВ рдмреЛрд▓рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдордХреНрдЦреА рдкрд░ рд▓рд┐рдЦрд╛ рдерд╛ рдЬрдм рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдореБрдЭреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ред рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рд▓реЛрдЧ рдпрд╣ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдореЗрд░реЗ рдкреНрдпрд╛рд░реЗ рджреЛрд╕реНрдд, рдпреЗ рд╕рднреА рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рднрдпрд╛рдирдХ рдирд╣реАрдВ рд╣реИрдВ? рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрдХ рджреЗрдВ ...

рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕реНрдкрд╖реНрдЯ рд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг:

 function makeSoup() { return Promise.all([ new Promise((reject, resolve) => { chopCarrots(); chopOnions(); resolve(); }), boilPot() ]) .then(() => { addCarrots(); return letPotKeepBoiling(5); }) .then(() => { addOnions(); return letPotKeepBoiling(10); }) .then(() => { console.log("   !"); }); } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╛рджреЗ рдЕрднреА рднреА рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИрдВред
рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд:

  • .then рдПрдХ рд╡рд╛рджрд╛ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдЕрдкрдирд╛ рдкрд░рд┐рдгрд╛рдо рд▓реЗрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рддрд░реНрдХ рдлрд╝рдВрдХреНрд╢рди (рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди ...) рдХреЛ рдкрд╛рд╕ рдХрд░рддреА рд╣реИред
  • рдЖрдк рдХрднреА рднреА .then рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рд╡рд╛рджрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, .then рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдмреНрд▓реЙрдХ рдХреА рддрд░рд╣ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИред
  • .catch рдкрджреНрдзрддрд┐ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, .catch рдореЗрдВ рдПрдХ рдФрд░ рд╡рд┐рдзрд┐ рд╣реИ - .catch ред рд╡рд╛рджреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрд░рдм рд▓реЗрдЦ рдФрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИрдВред

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


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

рддреЛ, рдЖрдк рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рд╡рд╛рджреЗ рдпрд╛ async / рдкреНрд░рддреАрдХреНрд╖рд╛?
рдЬрд╡рд╛рдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ - рдФрд░ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЙрдирдХрд╛ рд╕рдВрдпреЛрдЬрди рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ async / рдкреНрд░рддреАрдХреНрд╖рд╛рд░рдд рд╢рд┐рд╡рд┐рд░ рдореЗрдВ 100% рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдФрд░ рдмреЗрд╣рддрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рдЪреНрдЪреЗ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред



[рез] : рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИ ред
[реи] : рдореВрд▓ рд▓реЗрдЦ "Async рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдоред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдПрдХ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ " , рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж " рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдЬреЛ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ ред "
[рей] : рдЖрдк рддрд░реНрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрднрд╡рдд: рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдФрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЬрд╛рдБрдЪ рджреНрд╡рд╛рд░рд╛ рдПрд╕рд┐рдВрдХреНрд╕ / рдкреНрд░рддреАрдХреНрд╖рд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИ рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
[рек] : рдореИрдВрдиреЗ "рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ" рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрд╛, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╡реЗ setTimeout рдХреЗ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЙрд▓рдмреИрдХ рд╡рд╛рджреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред

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


All Articles