рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рд╕реЛрдЪрд╛ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░реНрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдкрдврд╝рддреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣ рд░рд╣рд╕реНрдпрдордп рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЖрдк рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рд╣рдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдХреА рдЕрджреНрднреБрдд рджреБрдирд┐рдпрд╛ рдореЗрдВ рдПрдХ рднреНрд░рдордг рдХреЗ рд╕рд╛рде рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдкрдиреА рдпрд╛рддреНрд░рд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
Chrome рдореЗрдВ рдХрдВрд╕реЛрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рд╕реНрд░реЛрдд рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВред рдЖрдк рдХрдИ рдЦрдВрдб рджреЗрдЦреЗрдВрдЧреЗ, рдФрд░ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ
рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЖрдк рдХреЙрд▓ рд╕реНрдЯреИрдХ рджреЗрдЦреЗрдВрдЧреЗ рдЬрдм рдЖрдк рдХреЛрдб рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдбрд╛рд▓рддреЗ рд╣реИрдВ):

рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреНрдпрд╛ рд╣реИ? рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдХреБрдЫ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдб рдХреА рдПрдХ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреАред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдмреЙрдХреНрд╕ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рдПрдХ рдмрдбрд╝рд╛ рдШрдЯрдХ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рд╣реИред рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп V8 рд╣реИрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Google Chrome рдФрд░ Node.js рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдВрдХреА, Safari / WebKit рдореЗрдВ JavaScriptCoreред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдЖрдЬ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреЗ рдорд╣рд╛рди рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдФрд░ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЗрдВрдЬрди рдХреЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреЙрд▓ рд╕реНрдЯреИрдХ (рдХреЙрд▓ рд╕реНрдЯреИрдХ), рдЧреНрд▓реЛрдмрд▓ рдореЗрдореЛрд░реА (рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдореЛрд░реА) рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн (рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн)ред рдЙрдирд╕реЗ рдорд┐рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ?
рд╕рд╛рдордЧреНрд░реА:
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдореЛрд░реА
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди: рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ? рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдФрд░ рдХреЙрд▓ рд╕реНрдЯреИрдХ
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХрд▓-рдкрд┐рд░реЛрдпрд╛ рдФрд░ рдЕрдиреНрдп рдордЬреЗрджрд╛рд░ рдХрд╣рд╛рдирд┐рдпрд╛рдВ рд╣реИрдВ
- рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдХреЙрд▓рдмреИрдХ рдХрддрд╛рд░ рдФрд░ рдШрдЯрдирд╛ рдкрд╛рд╢
- рдХреЙрд▓рдмреИрдХ рдирд░рдХ рдФрд░ рд╡рд╛рджреЗ ES6
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рджреЗ рдХреЗ рд╕рд╛рде рдмрдирд╛рдирд╛ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛
- ES6 рд╡рд╛рджреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ
- ES6 рдкреНрд░реЛрдорд┐рд╕ рдХреЙрдореНрдмрд┐рдиреЗрдЯрд░: Promise.all, Promise.allSettled, Promise.any рдФрд░ рдЕрдиреНрдп
- ES6 рд╡рд╛рджреЗ рдФрд░ microtask рдХрддрд╛рд░
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди: рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ? рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд┐рдХрд╛рд╕: рд╡рд╛рджреЛрдВ рд╕реЗ рд▓реЗрдХрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ / рд╡реЗрдЯ рддрдХ
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди: рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ? рдкрд░рд┐рдгрд╛рдо
1. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдореЛрд░реА
рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рднрд╛рд╖рд╛ рд╣реИред рдорд╛рдиреЛ рдпрд╛ рди рдорд╛рдиреЛ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдЬрд╛рджреВ, рд╣реБрд╣? рдЗрд╕ рдЬрд╛рджреВ рдХреЛ JIT (рдмрд╕ рд╕рдордп рд╕рдВрдХрд▓рди рдореЗрдВ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдХреЗрд▓реЗ рдЪрд░реНрдЪрд╛ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рд╖рдп рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд┐рддрд╛рдмреЗрдВ рднреА рдЬреЗрдЖрдИрдЯреА рдХреЗ рдХрд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдВрдЧреАред рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдЪрд░рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ:
var num = 2; function pow(num) { return num * num; }
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореИрдВ рдЖрдкрд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЖрдк рдХреНрдпрд╛ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ? рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ: "рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛрдб рдкрдврд╝рддрд╛ рд╣реИ" рдпрд╛ "рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ"ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдХреЛрдб рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ , рдФрд░ рдЬреИрд╕реЗ рд╣реА рдпрд╣ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣
рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рдХреБрдЫ рд▓рд┐рдВрдХ рдбрд╛рд▓рддрд╛ рд╣реИред
рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдореЛрд░реА (рдЬрд┐рд╕реЗ рд╣реАрдк рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рд╡рд╣ рдХреНрд╖реЗрддреНрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдЪрд░ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЬрдм рд╡рд╣ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдкрдврд╝реЗрдЧрд╛, рддреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рджреЛ рдмрд╛рдЗрдВрдбрд░ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ:

рднрд▓реЗ рд╣реА рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЪрд░ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдПрдХ рдмрдбрд╝реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдпрд╛ Node.js. рдРрд╕реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдХрдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдп рдФрд░ рдЪрд░ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рдХреЗрд╡рд▓
num
рдФрд░
pow
рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ, рдзреНрдпрд╛рди рд░рдЦреЗрдВред
рдлрд┐рд▓рд╣рд╛рд▓ рдХреБрдЫ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдЖрдЗрдП рдЕрдм рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
var num = 2; function pow(num) { return num * num; } pow(num);
рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдФрд░ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рджреЛ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдЧрд╛:
- рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн
- рдХреЙрд▓ рд╕реНрдЯреИрдХ
рд╡реЗ рдХреНрдпрд╛ рд╣реИрдВ?
2. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди: рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ? рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдФрд░ рдХреЙрд▓ рд╕реНрдЯреИрдХ
рдЖрдкрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдХреИрд╕реЗ рдЪрд░ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред рд╡реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдореГрддрд┐ (рдвреЗрд░) рдореЗрдВ рдЖрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЗрдВрдЬрди рдХреЛ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреИрд╕реЗ? рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдореЗрдВ рдПрдХ
рдкреНрд░рдореБрдЦ рдШрдЯрдХ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдпрд╣ рдПрдХ рд╕реНрдЯреИрдХреНрдб рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ : рддрддреНрд╡реЛрдВ рдХреЛ рдКрдкрд░ рд╕реЗ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЙрдирдХреЗ рд╕рд╛рде рдЕрдиреНрдп рддрддреНрд╡ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ, рд╡реЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдирд╣реАрдВ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдХреЛрдИ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрдерди рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╣реИред"
рд▓реЗрдХрд┐рди рд╡рд╛рдкрд╕ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ред
рдЬрдм рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрдВрдЬрди рдЙрд╕реЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ :

рдореБрдЭреЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рдкреНрд░рд┐рдВрдЧрд▓реНрд╕ рдЪрд┐рдкреНрд╕ рдХреЗ рдвреЗрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИред рд╣рдо рдвреЗрд░ рдХреЗ рдиреАрдЪреЗ рд╕реЗ рдЪрд┐рдкреНрд╕ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╢реАрд░реНрд╖ рдкрд░ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ: рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЧреБрдгрди рд╣реИ рдЬреЛ рдЬрд▓реНрджреА рд╕реЗ рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред
рдЙрд╕реА рд╕рдордп, рдЗрдВрдЬрди рдореЗрдореЛрд░реА рдореЗрдВ
рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ, рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рд╕рдореБрджреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдордЫрд▓реА рдХреА рддрд░рд╣ рддреИрд░рддреЗ рд╣реИрдВред рдХрд┐рддрдирд╛ рдореАрдард╛! рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдЖрдзреА рдХрд╣рд╛рдиреА рд╣реИред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЪрд░ рдпрд╛ рдЖрдВрддрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдиреЗрд╕реНрдЯреЗрдб рд╣реИрдВ?
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдПрдХ
рд╕реНрдерд╛рдиреАрдп рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдмрдирд╛рддрд╛ рд╣реИ:
var num = 2; function pow(num) { var fixed = 89; return num * num; } pow(num);
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ
pow
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП
fixed
рдЪрд░ рдЬреЛрдбрд╝рд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдерд╛рдиреАрдп рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдореЗрдВ
fixed
рд▓рд┐рдП рдПрдХ рдЕрдиреБрднрд╛рдЧ рд╣реЛрдЧрд╛ред рдореИрдВ рдЕрдиреНрдп рдЫреЛрдЯреА рдЫреЛрдЯреА рдЖрдпрддреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЫреЛрдЯреЗ рдЖрдпрдд рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реВрдБ, рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреА рдХрд▓реНрдкрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд┐рдд рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рдЖрдпрдд рдЦрдВрдб рдХреЗ рдЕрдВрджрд░, рд╕реНрдерд╛рдиреАрдп рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн
pow
рдмрдЧрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдпрд╣ рднреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдкреНрд░рддреНрдпреЗрдХ рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдЗрдВрдЬрди рдЕрдиреНрдп рд╕реНрдерд╛рдиреАрдп рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдмрдирд╛рддрд╛ рд╣реИред рдпреЗ рд╕рднреА рдЖрдпрдд рдЦрдВрдб рдмрд╣реБрдд рдЬрд▓реНрджреА рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ! рдПрдХ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдЧреБрдбрд╝рд┐рдпрд╛ рдХреА рддрд░рд╣!
рдЖрдЗрдП, рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рдХрд╣рд╛рдиреА рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?
3. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХрд▓-рдкрд┐рд░реЛрдпрд╛, рдФрд░ рдЕрдиреНрдп рдордЬреЗрджрд╛рд░ рдХрд╣рд╛рдирд┐рдпрд╛рдВ рд╣реИрдВ
рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдХреЙрд▓ рд╕реНрдЯреИрдХ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ ред рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдПрдВ рдХрд┐ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рдирд╣реАрдВ рдЫреЛрдбрд╝ рд╕рдХрддреЗред
рдЕрдЧрд░ рд╣рдо рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЬреЛрдбрд╝ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЧрдгрдирд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдФрд░ рдЕрдиреНрдп рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ,
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡реЗ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдмрд╛рд╣рд░реА рд╕рдВрд╕реНрдерд╛ рджреНрд╡рд╛рд░рд╛ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИред рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
рдЙрд╕реА рд╕рдордп, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрдВрдЬрди рдЗрд╕ рдХреЛрдб рд▓рд╛рдЗрди рдХреЛ рд▓рд╛рдЗрди рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ:
- рд╡реИрд░рд┐рдПрдмрд▓ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдореЛрд░реА (рд╣реАрдк) рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИред
- рдХреЙрд▓ рд╕реНрдЯреИрдХ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рднреЗрдЬрддрд╛ рд╣реИред
- рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдХрдИ рдЫреЛрдЯреЗ рд╕реНрдерд╛рдиреАрдп рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдмрдирд╛рддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдВрддрд░рд┐рдХ рдЪрд░ рдпрд╛ рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ)ред
рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрдиреЛрдВ рдХреЛ рд╕рдореЗрдЯрдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдореИрдХреЗрдирд┐рдХреНрд╕ рдХреА рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╕рдордЭ рд╣реИред рдЕрдЧрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдо рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
4. рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдХреЙрд▓рдмреИрдХ рдХрддрд╛рд░, рдФрд░ рдШрдЯрдирд╛ рдкрд╛рд╢
рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдореЛрд░реА, рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдФрд░ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╣рдорд╛рд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдХреБрдЫ рднреВрд▓ рдЧрдПред рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╣рд░ рдмрд╛рддрдЪреАрдд, рдЬрд┐рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред REST API рдпрд╛ рдЯрд╛рдЗрдорд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕реЗрдХрдВрдб рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдВрдЬрди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдХреЙрд▓ рд╕реНрдЯреИрдХ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдП рдмрд┐рдирд╛ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдордд рднреВрд▓реЛ, рдХреЙрд▓ рд╕реНрдЯреИрдХ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЕрд╡рд░реБрджреНрдз рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИ ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рд╕реНрдорд╛рд░реНрдЯ рд╣реИрдВ, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдереЛрдбрд╝реА рдорджрдж рд╕реЗ рд╡реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдЫрд╛рдБрдЯ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрдм рд╣рдо рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕реЗ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдПрдХ рдЯрд╛рдЗрдорд░ рд▓реЗ рд▓реЛ:
setTimeout(callback, 10000); function callback(){ console.log('hello timer!'); }
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрджреНрдпрдкрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╣реА рд╕реИрдХрдбрд╝реЛрдВ рдмрд╛рд░
setTimeout
рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ, рдЖрдк рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗ рдХрд┐
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рддреЛ рдЗрд╕рдореЗрдВ рдХреЛрдИ
setTimeout
рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рддрдерд╛рдХрдерд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдкреАрдЖрдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЕрджреНрднреБрдд! рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдЪреВрдВрдХрд┐
setTimeout
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдкреАрдЖрдИ рдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╣реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рд╡рд╣рд╛рдВ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд▓реЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЗрд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░
рдХреЙрд▓рдмреИрдХ рдХрддрд╛рд░ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред рдлрд┐рд▓рд╣рд╛рд▓, рджреЛ рдФрд░ рдЖрдпрдд рдЦрдВрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВред рдЗрд╕ рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
var num = 2; function pow(num) { return num * num; } pow(num); setTimeout(callback, 10000); function callback(){ console.log('hello timer!'); }
рдЕрдм рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

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

рдорд╛рди рд▓реЗрдВ рдХрд┐
callback()
рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЬрдм
pow()
рддреЛ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рдореБрдХреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╡реЗрдВрдЯ рд▓реВрдк callback()
рднреЗрдЬрддрд╛ callback()
ред рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИ! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдХрд┐рдпрд╛, рдЕрдЧрд░ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрд░реЗрдЦ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╛рдж рд░рдЦреЗрдВ:
рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ, рдХреЙрд▓рдмреИрдХ рдХрддрд╛рд░ рдФрд░ рдИрд╡реЗрдВрдЯ рд▓реВрдкреНрд╕ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕реНрддрдВрдн рд╣реИрдВ ред
рдФрд░ рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдлрд┐рд▓рд┐рдк рд░реЙрдмрд░реНрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрд╕реБрдХ рд╡реАрдбрд┐рдпреЛ "рдХреНрдпрд╛ рдмрд┐рд▓реНрд▓реА рд╡реИрд╕реЗ рднреА рдШрдЯрдирд╛ рдкрд╛рд╢ рд╣реИ" рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдШрдЯрдирд╛ рд▓реВрдк рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдо рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рде рдЕрднреА рддрдХ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдзреНрдпрд╛рдпреЛрдВ рдореЗрдВ рд╣рдо рдИрдПрд╕ 6 рд╡рд╛рджреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
5. рдХреЙрд▓рдмреИрдХ рдирд░рдХ рдФрд░ рдИрдПрд╕ 6 рд╡рд╛рджреЗ
рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣рд░ рдЬрдЧрд╣, рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
function mapper(element){ return element * 2; } [1, 2, 3, 4, 5].map(mapper);
mapper
рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ
map
рдЕрдВрджрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИред рдЕрдм рдЗрд╕ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
function runMeEvery(){ console.log('Ran!'); } setInterval(runMeEvery, 5000);
рдпрд╣ рдХреЛрдб рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐
setInterval
рдЕрдВрджрд░ рд╣рдо runMeEvery callback рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╣рдореЗрдВ "рдХреЙрд▓рдмреИрдХ рдирд░рдХ" - "рдХреЙрд▓рдмреИрдХ рдирд░рдХ" рдирд╛рдордХ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереАред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ
рдХреЙрд▓рдмреИрдХ рдирд░рдХ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА "рд╢реИрд▓реА" рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдЕрдиреНрдп рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реЛрддреЗ рд╣реИрдВ ... рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрд╕ рдЬрд╛рд▓ рдореЗрдВ рдкрдбрд╝ рдЧрдП рд╣реИрдВред
рд╕рдЪ рдХрд╣реВрдВ рддреЛ, рдореИрдВрдиреЗ рдХрднреА рдХреЙрд▓рдмреИрдХ рдХреЗ рдмрдбрд╝реЗ рдкрд┐рд░рд╛рдорд┐рдб рдирд╣реАрдВ рдмрдирд╛рдПред рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рдореИрдВ рдкрдардиреАрдп рдХреЛрдб рдХреЛ рдорд╣рддреНрд╡ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рд╣рдореЗрд╢рд╛ рдЗрд╕рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдЯрд┐рдХрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдк рдХреЙрд▓рдмреИрдХ рдирд░рдХ рд╕реЗ рдЯрдХрд░рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдп рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред
рдореИрдВ рдХреЙрд▓рдмреИрдХ рдирд░рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЕрдЧрд░ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ
callbackhell.com рдкрд░ рдЬрд╛рдПрдВ , рдЬрд╣рд╛рдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХреА рдЧрдИ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдФрд░ рд╣рдо
ES6 рд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдРрдбрдСрди рд╣реИ рдЬрд┐рд╕реЗ рдирд░рдХ рдХреЙрд▓рдмреИрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рджреЗ рдХреНрдпрд╛ рд╣реИрдВ?
рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рджрд╛ рдПрдХ рднрд╡рд┐рд╖реНрдп рдХреА рдШрдЯрдирд╛ рдХрд╛ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ ред рдПрдХ рд╡рд╛рджрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╢рдмреНрджрдЬрд╛рд▓ рдореЗрдВ, рдПрдХ рд╡рд╛рджрд╛ "рд╣рд▓" (рд╣рд▓) рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрджрд┐ рд╡рд╛рджрд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рд╡рд╛рджреЛрдВ рдХреА рднреА рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛ рд╡рд╛рджрд╛ рд▓рдВрдмрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдореИрдВ рдЕрдкрдирд╛ рд╡рд╛рджрд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ? рд╣рд╛рдВред рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
6. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╡рд╛рджреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛
рдПрдХ рдирдпрд╛ рд╡рд╛рджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ:
resolve
рдФрд░
reject
ред рдЖрдЗрдП рдПрдХ рдирдпрд╛ рд╡рд╛рджрд╛ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ 5 рд╕реЗрдХрдВрдб рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):
const myPromise = new Promise(function(resolve){ setTimeout(function(){ resolve() }, 5000) });
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ,
resolve
рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡рд╛рджрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПред рдФрд░
reject
рдПрдХ рдЕрд╕реНрд╡реАрдХреГрдд рд╡рд╛рджрд╛ рдмрдирд╛рдПрдЧрд╛:
const myPromise = new Promise(function(resolve, reject){ setTimeout(function(){ reject() }, 5000) });
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк
reject
рдХрд░ рд╕рдХрддреЗ
reject
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк
reject
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ
reject
, рддреЛ рдЖрдк
resolve
рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░
рд╕рдХрддреЗ ред рдЕрд░реНрдерд╛рддреН, рдирд┐рдореНрди рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рд╕реНрд╡реАрдХреГрдд рд╡рд╛рджрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдЧрд╛:
рд╡рд╛рджреЗ рдЕрднреА рдЗрддрдиреЗ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рджрд┐рдЦрддреЗ, рдареАрдХ рд╣реИ? рдпреЗ рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреБрдЫ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЪрд▓реЛ рдХреБрдЫ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдФрд░ рдЕрдиреБрдорддрд┐ рджреА, рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const myPromise = new Promise(function(resolve) { resolve([{ name: "Chris" }]); });
рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рднреА рдХреБрдЫ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред
рдХрд┐рд╕реА рд╡рд╛рджреЗ рд╕реЗ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ then
рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╡рд╛рджреЗ рдХреЛ рд╕рдВрдмрджреНрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред рд╡рд╣ рдХреЙрд▓рдмреИрдХ рд▓реЗрддрд╛ рд╣реИ (рдХреИрд╕реА рд╡рд┐рдбрдВрдмрдирд╛ рд╣реИ!), рдЬреЛ рд╡рд░реНрддрдорд╛рди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ:
const myPromise = new Promise(function(resolve, reject) { resolve([{ name: "Chris" }]); }); myPromise.then(function(data) { console.log(data); });
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░ рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХреЛрдб рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЬреНрдпрд╛рджрд╛рддрд░ рдмрд╛рд╣рд░реА рд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рд░реНрдорд╛рддрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рд╡рд╛рджрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ:
const shinyNewUtil = new Promise(function(resolve, reject) {
рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╣рдо
Promise.resolve()
рдХреЙрд▓ рдХрд░рдХреЗ рдПрдХ рд╡рд╛рджрд╛ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Promise.resolve({ msg: 'Resolve!'}) .then(msg => console.log(msg));
рддреЛ, рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рджреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрдХрдорд╛рд░реНрдХ рд╣реИрдВред рдПрдХ рдШрдЯрдирд╛ "рдирд┐рд░реНрдгрдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╕рдлрд▓ (рдЕрдиреБрдордд, рдирд┐рд╖реНрдкрд╛рджрд┐рдд) рдпрд╛ рдЕрд╕рдлрд▓ (рдЕрд╕реНрд╡реАрдХреГрдд) рд╣реЛ рд╕рдХрддреА рд╣реИред рдПрдХ рд╡рд╛рджрд╛ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ
then
рд╕рдВрд▓рдЧреНрди рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдо рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╡рд╛рджреЛрдВ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреЗрдВред
7. ES6 рд╡рд╛рджреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рдереАрдВ, рдХрдо рд╕реЗ рдХрдо рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдореЗрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
function makeAnError() { throw Error("Sorry mate!"); } try { makeAnError(); } catch (error) { console.log("Catching the error! " + error); }
рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛:
Catching the error! Error: Sorry mate!
рдЬреИрд╕реА рдХрд┐ рдЙрдореНрдореАрдж рдереА, рддреНрд░реБрдЯрд┐
catch
рдореЗрдВ рдЧрд┐рд░ рдЧрдИред рдЕрдм рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
function makeAnError() { throw Error("Sorry mate!"); } try { setTimeout(makeAnError, 5000); } catch (error) { console.log("Catching the error! " + error); }
рдпрд╣ рдХреЛрдб
setTimeout
рдХрд╛рд░рдг рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
throw Error("Sorry mate!"); ^ Error: Sorry mate! at Timeout.makeAnError [as _onTimeout] (/home/valentino/Code/piccolo-javascript/async.js:2:9)
рдЕрдм рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ рд╣реИред
catch
рддреНрд░реБрдЯрд┐ рдкрдХрдбрд╝ рдореЗрдВ рдирд╣реАрдВ рдЖрдИ, рд▓реЗрдХрд┐рди рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕реНрдЯреИрдХ рдКрдкрд░ рдЙрда рдЧрдпрд╛ред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐
try/catch
рдХреЗрд╡рд▓ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░
рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ
рд╣реИ ред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдереЗред рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рдореИрдВрдиреЗ рдХрд╣рд╛ рдерд╛ рдХрд┐
reject
рдХрд░рдиреЗ рд╕реЗ рд╡рд╛рджреЗ рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рд╣реЛрддреА рд╣реИ:
const myPromise = new Promise(function(resolve, reject) { reject('Errored, sorry!'); });
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдХреЙрд▓ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ (рдлрд┐рд░ рд╕реЗ) рдПрдХ рдХреЙрд▓рдмреИрдХ:
const myPromise = new Promise(function(resolve, reject) { reject('Errored, sorry!'); }); myPromise.catch(err => console.log(err));
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдПрдХ рд╡рд╛рджрд╛ рдмрдирд╛рдиреЗ рдФрд░ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
Promise.reject()
рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ:
Promise.reject({msg: 'Rejected!'}).catch(err => console.log(err));
рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рджреЗрдВ:
then
рд╣реИрдВрдбрд▓рд░ рдХреЛ
then
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╡рд╛рджреЗ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП
catch
рд╣реИрдВрдбрд▓рд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рд╛рдиреА рдХрд╛ рдЕрдВрдд рдирд╣реАрдВ рд╣реИред рдиреАрдЪреЗ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ
async/await
рдХрд╛рдо
try/catch
рд╕рд╛рде рдорд╣рд╛рди рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
8. ES6 рд╡рд╛рджреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрдХ: Promise.all, Promise.allSettled, Promise.any рдФрд░ рдЕрдиреНрдп
рд╡рд╛рджреЗ рдЕрдХреЗрд▓реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╡рд╛рджреЗ рдПрдкреАрдЖрдИ
рд╡рд╛рджреЛрдВ рдХреЗ
рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди
рдХрд░рддрд╛ рд╣реИ ред рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдореЗрдВ рд╕реЗ
рдПрдХ Promise.all рд╣реИ , рдпрд╣ рд╡рд╛рджреЛрдВ рд╕реЗ рдПрдХ рд╕рд░рдгреА рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ Promise.all рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрджрд┐ рд╕рд░рдгреА рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
Promise.race рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣реА рд╕рд░рдгреА рдореЗрдВ рд╡рд╛рджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
V8 рдХреЗ рдЕрдзрд┐рдХ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рджреЛ рдирдП рдХреЙрдореНрдмрд┐рдиреЗрдЯрд░ рднреА рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ:
Promise.allSettled
рдФрд░
Promise.any
ред
Promise.any рдЕрднреА рднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рд╣реИ, рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡рд╣ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рд╡рд╛рджреЗ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
Promise.race
рд╕реЗ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐
Promise.any рдЕрд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╛рджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ ред
Promise.allSettled
рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рд╡рд╣ рд╡рд╛рджреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рднреА рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╡рд╛рджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ "рдЫреЛрдЯрд╛" рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рд░рдгреА рдореЗрдВ рд╕рднреА рд╡рд╛рджреЗ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рдЪрд░рдг рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдЗрд╕реЗ
Promise.all
рдХреЗ рд╡рд┐рдкрд░реАрдд рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
9. ES6 рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ microtask рдХрддрд╛рд░
рдпрджрд┐ рдЖрдкрдХреЛ рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рд╕реЗ рдпрд╛рдж рд╣реИ, рддреЛ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рд╣рд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓рдмреИрдХ рдХрддрд╛рд░ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкреНрд░реЛрдорд┐рд╕ рдХреЛ рджрд┐рдП рдЧрдП рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдЕрд▓рдЧ рднрд╛рдЧреНрдп рд╣реИ: рд╡реЗ рдХрд╛рд░реНрдп рдХрддрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдорд╛рдЗрдХреНрд░реЛрдЯреИрд╕реНрдХ рдХрддрд╛рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдФрд░ рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:
рдорд╛рдЗрдХреНрд░реЛ рдХрддрд╛рд░ рдХрддрд╛рд░ рдХреЙрд▓ рдХрддрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ рдЖрддреА рд╣реИ ред рдЬрдм рдирдП рдХреЙрд▓рдмреИрдХ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ, рдорд╛рдЗрдХреНрд░реЛрдЯрд╕реНрдХ рдХреНрдпреВ рд╕реЗ рдХреЙрд▓рдмреИрдХ рдкреВрд░реНрд╡рддрд╛ рд▓реЗрддреЗ рд╣реИрдВред
рдЗрд╕ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЛ рдЬреЗрдХ рдЖрд░реНрдЪреАрдмрд╛рд▓реНрдб рджреНрд╡рд╛рд░рд╛
рдЯрд╛рд╕реНрдХ, рдорд╛рдЗрдХреНрд░реЛрдЯреЗрдХ, рдХреНрд╡реАрдЬ рдФрд░ рд╢реЗрдбреНрдпреВрд▓ , рдорд╣рд╛рди рдкрдврд╝рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
10. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди: рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ? рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд┐рдХрд╛рд╕: рд╡рд╛рджреЛрдВ рд╕реЗ рд▓реЗрдХрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ / рд╡реЗрдЯ рддрдХ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╣рдо рд▓рдЧрд╛рддрд╛рд░ рд╣рд░ рд╕рд╛рд▓ рд╕реБрдзрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╡рд╛рджреЗ рдПрдХ рд╕рдорд╛рдкрди рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣реЗ рдереЗ, рд▓реЗрдХрд┐рди
ECMAScript 2017 (ES8) рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛: async/await
ред
async/await
рд╕рд┐рд░реНрдл рдПрдХ рд╢реИрд▓реАрдЧрдд рд╕реБрдзрд╛рд░ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░ рдХрд╣рддреЗ рд╣реИрдВред
async/await
рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ (рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рднрд╛рд╖рд╛ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдпрд╣ рд╡рд╛рджреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдКрдкрд░, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд╡рд╛рджреЗ рдХреЛ рд╕рдВрдЧрдд рдореЗрдВ рд╕рд╣реЗрдЬ рджрд┐рдпрд╛ рдерд╛:
const myPromise = new Promise(function(resolve, reject) { resolve([{ name: "Chris" }]); }); myPromise.then((data) => console.log(data))
рдЕрдм
async/await
рд╣рдо рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдорд╛рд░реА рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рдХреЛрдб рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рджрд┐рдЦрд╛рдИ рджреЗ ред
then
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп
then
рд╣рдо
async
рдирд╛рдордХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд╛рджрд╛ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдо рдкрд░рд┐рдгрд╛рдо рдХрд╛
await
рдХрд░реЗрдВрдЧреЗ:
const myPromise = new Promise(function(resolve, reject) { resolve([{ name: "Chris" }]); }); async function getData() { const data = await myPromise; console.log(data); } getData();
рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд╣реИ рдирд╛? рдпрд╣ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ рдХрд┐ рдПрдХ async рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреЛрдИ рднреА рдЗрд╕реЗ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ:
async function getData() { const data = await myPromise; return data; } getData().then(data => console.log(data));
рдЧрд▓рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
async/await
рдХрд╛ рдПрдХ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд░реНрдорд╛рдг рд╣рдореЗрдВ
try/catch
рдХрд╛ рдЙрдкрдпреЛрдЧ
try/catch
рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред
Async рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдЙрдирдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП
рдкрд░рд┐рдЪрдп рдкрдврд╝реЗрдВред
рдЖрдЗрдП рдлрд┐рд░ рд╕реЗ рдЙрд╕ рд╡рд╛рджреЗ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо
catch
рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ:
const myPromise = new Promise(function(resolve, reject) { reject('Errored, sorry!'); }); myPromise.catch(err => console.log(err));
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде, рд╣рдо рдЗрд╕ рддрд░рд╣ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
async function getData() { try { const data = await myPromise; console.log(data);
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рд░ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рд╢реИрд▓реА рдкрд░ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
try/catch
рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмрд╛рдд рд╣реИред рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдЗрд╕
try
рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдХреИрд╕реЗ рд╣реЛрддреА рд╣реИ:
async function getData() { try { if (true) { throw Error("Catch me if you can"); } } catch (err) { console.log(err.message); } } getData() .then(() => console.log("I will run no matter what!")) .catch(() => console.log("Catching err"));
рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рджреЛ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐
try/catch
рдПрдХ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рд░реНрдорд╛рдг рд╣реИ, рдФрд░ рд╣рдорд╛рд░рд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ ред рд╡реЗ рдЧрд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рддрд░рд╣ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рд╕реНрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред ! ,
throw
,
catch
getData()
. , ┬лCatch me if you can┬╗, ┬лI will run no matter what!┬╗.
,
throw
then
. , ,
Promise.reject()
:
async function getData() { try { if (true) { return Promise.reject("Catch me if you can"); } } catch (err) { console.log(err.message); } } Now the error will be handled as expected: getData() .then(() => console.log("I will NOT run no matter what!")) .catch(() => console.log("Catching err")); "Catching err"
async/await
JavaScript. .
, JS-
async/await
. . ,
async/await
тАФ .
11. JavaScript-: ?
JavaScript тАФ , , . JS-: V8, Google Chrome Node.js; SpiderMonkey, Firefox; JavaScriptCore, Safari.
JavaScript- ┬л┬╗ : , , , . , .
JavaScript- , . JavaScript: , - , (, ) .
ECMAScript 2015 . тАФ , . . 2017-
async/await
: , , .