рдореБрдЭреЗ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рди рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рджрд┐рди рдХреА рд╢реБрд░реБрдЖрдд рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИред рдкреНрд▓реАрдмрд┐рдпрдВрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА "рдмреЛрд▓реНрдб" рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рд╕рдлрд▓ рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЦреВрди рдЙрдмрд▓рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдЯреИрдХрдСрд╡рд░рдлреНрд▓реЛ рдХреЗ рд▓рд┐рдП рд╢рд░реНрдордирд╛рдХ рдпрд╛рддреНрд░рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдкреВрд░реЗ рджрд┐рди рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ рдкреАрдбрд╝рд╛ рджреЗрддрд╛ рд╣реИред
(рдЗрд╕ рдмреАрдЪ, рдЖрдк рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдкреНрд░рдмреБрджреНрдз рднрд╛рд╖рд╛ рдФрд░ рдкрд░рд┐рд╖реНрдХреГрдд рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЬреИрд╕реЗ рд╕реНрд╡рд╛рдореА рдХреЗ рдирд┐рдкреБрдг рд╣рд╛рдереЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ)ред
рдмреЗрд╢рдХ, рдЙрдкрджреЗрд╢ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЬреЛрдЦрд┐рдо рд▓реЗрддрд╛ рд╣реВрдВред рдЖрдк рдЙрд╕ рднрд╛рд╖рд╛ рдХреЛ рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рддрд╛ рд╣реВрдБ! рдПрдХ рд▓рд╛рдкрд░рд╡рд╛рд╣ рдкреИрдореНрдлрд▓реЗрдЯ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдкрд┐рдЪрдлреЛрд░реНрдХ рдФрд░ рдЯрд╛рд░реНрдЪ рдХреЗ рд╕рд╛рде рдореЛрдмрд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдЙрдЧреНрд░ рднреАрдбрд╝ рдереАред
рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдзрд░реНрдореА рдЖрдЧ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЖрдкрдХреА (рд╢рд╛рдпрдж рдирд╛рдЬреБрдХ) рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдареЗрд╕ рди рдкрд╣реБрдБрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ ...
... рдХреМрди рдЕрднреА рдЖрдпрд╛ред рдПрдХ рдкреБрдЖрд▓ рдкреБрддрд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЬрд┐рд╕рдХреА рдПрдХрдорд╛рддреНрд░ рднреВрдорд┐рдХрд╛ рдЖрд▓реЛрдЪрдХреЛрдВ рдХреЛ рджрд╛рдВрд╡ рдкрд░ рд▓рдЧрд╛рдиреЗ рдХреА рд╣реИред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ, рдЕрдВрдд рдореЗрдВ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХрд┐рд╕рдХрд╛ рдЪреЗрд╣рд░рд╛ (рдпрд╛ рдЪреЗрд╣рд░реЗ) рдкреБрдЖрд▓ рдХреЗ рд╕рд┐рд░ рдкрд░ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдирдИ рднрд╛рд╖рд╛
рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдмреНрд▓реЙрдЧ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдИ (рдФрд░ рдмреЗрдХрд╛рд░) рднрд╛рд╖рд╛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрд╡рд░рдХрд┐рд▓ рд╣реЛрдЧрд╛, рддреЛ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЙрд╕ рднрд╛рд╖рд╛ рдХреЗ рд╕рдорд╛рди рд╣реИ рдЬреЛ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯред рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдФрд░ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдоред if
, while
, рдЖрджрд┐ - рд╣рдорд╛рд░реА рднреАрдбрд╝ рдХрд╛ рд▓рд┐рдВрдЧреБрдЖ рдлреНрд░реЗрдВрдХрд╛ ред
рдореИрдВрдиреЗ JS рдХреЛ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдЪреБрдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпрд╣ рдПрдХ рдРрд╕реА рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдФрд╕рдд рдкрд╛рдардХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВред рджреЗрдЦрд╛:
function thisIsAFunction(){ return "!"; }
рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рднрд░рд╡рд╛рдВ рдЬрд╛рдирд╡рд░ рдПрдХ рд╢рд╛рдВрдд (рдкрдврд╝рд╛ рд╣реБрдЖ - рдмреБрд░рд╛) рднрд╛рд╖рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдХрд╛рд░реНрдп рд╣реИрдВ ред рддреЛ рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрд╣ рдмрд╣реБрдд рд╣реА рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рд╡реЗ рд╢рд╛рдВрдд рдФрд░ рдЕрддрд┐-рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдЖрдк рд╢рд╛рдпрдж рдЙрдирдХреА рдорджрдж рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рдЖрдк рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдордЭ рд▓реЗрддреЗ рд╣реИрдВ, рдЖрдк рд╣рд░ рдЬрдЧрд╣ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд▓рд╛рдирдд рд╣реИред
рд╢рд╛рдпрдж рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ:
describe("", function(){ it(" ", function(){ expect("").not.toBe(""); }); };
рдпрд╛ рдЬрдм рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░реНрд╕ (рдкрд╛рд░реНрд╕) рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ:
tokens.match(Token.LEFT_BRACKET, function(token){
рдлрд┐рд░, рддреНрд╡рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╢рд╛рдВрдд рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди, рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓, рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддреЗ рд╣реИрдВ - рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдмреВрдеред
рдЕрдиреБрд╡рд╛рджрдХ: рдореВрд▓ "рдлрдВрддрд╛рд▓рд╛рдкрд▓реБрдЬрд╝рд╛" рдореЗрдВред рдЙрдкрд╕рд░реНрдЧ -a-palooza рдЗрддрдиреА рд╢рд╛рдВрдд рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕рднреА рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЖрдкрдХрд╛ рд░рдВрдЧ рдХреНрдпрд╛ рд╣реИ?
рдФрд░ рдпрд╣рд╛рдБ рд╡рд┐рд╖рдорддрд╛рдПрдБ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВред рд╣рдорд╛рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдЕрдЬреАрдм рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ:
1. рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рд░рдВрдЧ рд╣реЛрддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди - рдПрдХ рдЕрдирд╛рдо рдХреЙрд▓рдмреИрдХ рдпрд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдпрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди - рдпрд╛ рддреЛ рд▓рд╛рд▓ рдпрд╛ рдиреАрд▓рд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рдХреЛрдб рдХреЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд░рдВрдЧ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЪрд▓реЛ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:
blue*function doSomethingAzure(){
рд╣рдорд╛рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рд░рдВрдЧрд╣реАрди рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? - рдПрдХ рд░рдВрдЧ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ред рдпреЗ рдирд┐рдпрдо рд╣реИрдВред рдФрд░ рдХреБрдЫ рдФрд░ рдирд┐рдпрдо рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдкрдХреЛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
2. рд░рдВрдЧ рдлрдВрдХреНрд╢рди рдХреЛ рдХрд╣рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рджреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИрдВ - "рдмреНрд▓реВ" рдФрд░ "рд░реЗрдб"ред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
doSomethingAzure(...)*blue; doSomethingCarnelian()*red;
рдЬрдм рдЖрдк рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЙрд╕рдХреЗ рд░рдВрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд╣реИ - рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреЛрд╖реНрдардХ (рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд) рдХреЗ рдмрд╛рдж рд▓рд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рд▓ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рд╣реИ - рддреЛ рдХреБрдЫ рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реЛрдЧрд╛ред рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рднреВрд▓рд╛ рдмрдЪрдкрди рджреБрдГрд╕реНрд╡рдкреНрди, рдЬреИрд╕реЗ рдХрд┐ рд╣рд╛рдереЛрдВ рдХреЗ рдмрдЬрд╛рдп рд╕рд╛рдВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╕рдЦрд░рд╛ рдЬреЛ рдЖрдкрдХреЗ рдмрд┐рд╕реНрддрд░ рдХреЗ рдиреАрдЪреЗ рдЫрд┐рдкрд╛ рдерд╛ред рд╡рд╣ рдореЙрдирд┐рдЯрд░ рд╕реЗ рдмрд╛рд╣рд░ рдХреВрдж рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЖрдкрдХреА рдЖрдБрдЦреЗрдВ рдЪреВрд╕ рд▓реЗрдЧрд╛ред
рдореВрд░реНрдЦ рд╢рд╛рд╕рди, рд╕рд╣реА? рдУрд╣, рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдмрд╛рдд:
3. рдХреЗрд╡рд▓ рд▓рд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред
рдЖрдк рд▓рд╛рд▓ рд╕реЗ рдиреАрд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдпрд╣ рдХреЛрд╖реЗрд░ рд╣реИ:
red*function doSomethingCarnelian(){ doSomethingAzure()*blue; }
рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВред рдпрджрд┐ рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
blue*function doSomethingAzure(){ doSomethingCarnelian()*red; }
- рдЖрдк рдкреБрд░рд╛рдиреЗ рдЬреЛрдХрд░ рд╕реНрдкрд╛рдЗрдбрд░ рдорд╛рд╡реЗ рд╕реЗ рдорд┐рд▓рдиреЗ рдЬрд╛рдПрдВрдЧреЗред
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╕реЗ filter()
рдЬреИрд╕реЗ рдЙрдЪреНрдЪ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдирдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдВрдЧ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░рдВрдЧ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЗрд╕рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди filter()
рд▓рд╛рд▓ рдмрдирд╛рдирд╛ рд╣реИред рддрдм рд╣рдо рдХрдо рд╕реЗ рдХрдо рд▓рд╛рд▓, рдХрдо рд╕реЗ рдХрдо рдиреАрд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдореЗрдВ рдХрд╛рдВрдЯреЛрдВ рдХреЗ рддрд╛рдЬ рдореЗрдВ рдЕрдЧрд▓реЗ рдХрд╛рдВрдЯреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЛрдЯ рд▓рдЧреА рд╣реИ, рдЬреЛ рджреА рдЧрдИ рднрд╛рд╖рд╛ рд╣реИ:
4. рд▓рд╛рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рджрд░реНрдж рд╣реЛрддрд╛ рд╣реИ
рд╣рдо рдЗрд╕ "рджрд░реНрдж" рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдмрд╕ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рд╡рд╣ рд▓рд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╣реВрдк рд╕реЗ рдХреВрджрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЙрд▓ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреЙрд▓реАрд╕рд┐рдмрд┐рд▓рд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрд╛ рдЖрдк рдХреБрдЫ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрдВрджрд░ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдЖрдк рдХреЗрд╡рд▓ рд╡рд┐рд╖рдо рд░реЗрдЦрд╛рдУрдВ рд╕реЗ рд▓рд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рд░ рдХреЛрдИ рдЬреЛ рдЖрдкрдХреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдЖрдкрдХреА рдХреЙрдлреА рдореЗрдВ рдереВрдХрдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ рдпрд╛ рдХреБрдЫ рдФрд░ рдЦрд░рд╛рдм рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдХрднреА рднреА рд▓рд╛рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рдмрд╕ рд╕рдм рдХреБрдЫ рдиреАрд▓рд╛ рдХрд░ рджреЗрдВ, рдФрд░ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕рднреА рдХрд╛рд░реНрдп рдПрдХ рд╣реА рд░рдВрдЧ рдХреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд░рдВрдЧ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдорд╛рд░реА рднрд╛рд╖рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧреВрдВрдЧрд╛ рдирд╣реАрдВ рд╣реИред
рдХрд╛рд╢, рдЙрджрд╛рд╕реА рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рднрд╛рд╖рд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ (рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓реЗрдЦрдХ рд╕реИрдбрд┐рд╕реНрдЯ рд╣реИрдВ, рдареАрдХ рд╣реИ?) рд╣рдо рдореЗрдВ рдЖрдЦрд┐рд░реА рдХрд╛рдВрдЯрд╛ рдЪрд┐рдкрдХрд╛ рджреЗрдВ:
5. рднрд╛рд╖рд╛ рдХреЗ рдХреБрдЫ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд▓рд╛рд▓ рд╣реИрдВред
рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдЬрд┐рдирдХрд╛ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ , рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдПрдХ рдмреБрджреНрдзрд┐рдорд╛рди рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдпрд╣ рд╕рдВрджреЗрд╣ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднрд╛рд╖рд╛ рд╣рдорд╕реЗ рдирдлрд░рдд рдХрд░рддреА рд╣реИред
рдпрд╣ рд╕рднреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рджреЛрд╖ рд╣реИ!
рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЙрдЪреНрдЪ рдЖрджреЗрд╢ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕ рд╕рднреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдмрдХрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдмреЗрд╡рдХреВрдл рдмрдирд╛рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдмреНрд▓реВ рдлрд░реНрд╕реНрдЯ-рдСрд░реНрдбрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ (рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯрд░), рдЬреИрд╕рд╛ рдХрд┐ рднрдЧрд╡рд╛рди рджреНрд╡рд╛рд░рд╛ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ - рд╣рдо рдЗрд╕ рд╕рднреА рджрд░реНрдж рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓реЗрдВрдЧреЗред
рдпрджрд┐ рд╣рдо рдХреЗрд╡рд▓ рдиреАрд▓реЗ рд░рдВрдЧ рдХреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдиреАрд▓рд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рд╣рдо рд▓рд╛рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рдЬрдм рддрдХ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рд╣рдореЗрдВ "рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрд░реВрдкрддрд╛" (рдкреЙрд▓реАрдХреНрд░реЛрдореИрдЯрд┐рдХ?) рдпрд╛ рдЕрдиреНрдп рдмрдХрд╡рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд▓реЗрдХрд┐рди рдЕрдлрд╕реЛрд╕, рдЙрдЪреНрдЪ-рдХреНрд░рдо рдХреЗ рдХрд╛рд░реНрдп рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рддрдм рдЖрддреА рд╣реИ рдЬрдм рд╣рдо рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдореЗрдВ рддреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╛ рдХреЛрдб рд╣реИ, рдЬреЛ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдПрдХ рдЧреНрд░рд╛рдл рдкрд░ рдбрд╛рдпрдЬреЗрдХреНрд╕реНрдЯреНрд░рд╛ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕рд╛рдорд╛рдЬрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдХрд┐рддрдирд╛ рджрдмрд╛рд╡ рдбрд╛рд▓рддреЗ рд╣реИрдВред (рдореИрдВрдиреЗ рдпрд╣ рддрдп рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ред рд╕рдХрд░реНрдордХ рдЕрд╡рд╛рдВрдЫрд┐рддрддрд╛?)
рдмрд╛рдж рдореЗрдВ рдЖрдкрдХреЛ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣реАрдВ рдФрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдб рд▓рдкреЗрдЯрддреЗ рд╣реИрдВред рдЙрд╕реЗ рдкреБрд░рд╛рдиреА рдЬрдЧрд╣ рд╕реЗ рдФрд░ рдирдП рд╕реЗ рдмреБрд▓рд╛рдУред рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕ рд░рдВрдЧ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдЖрдк рд╢рд╛рдпрдж рдЗрд╕реЗ рдиреАрд▓рд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдпрд╣ рдХрд░реНрдиреЗрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЗрди рдЦрд░рд╛рдм "рдХреЗрд╡рд▓ рд▓рд╛рд▓" рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ?
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╡рд╣ рдирдпрд╛ рд╕реНрдерд╛рди рдЬрд┐рд╕рд╕реЗ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣ рдиреАрд▓рд╛ рд╣реИ? рд▓реЗрдХрд┐рди рдЕрдм рдЖрдкрдХреЛ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдХреЛ рд▓рд╛рд▓ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдлрд┐рд░ рдЗрд╕ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВред рдУрд╣ред рдЖрдкрдХреЛ рд╡реИрд╕реЗ рднреА рд░рдВрдЧ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рд╕рдореБрджреНрд░ рддрдЯ рдЫреБрдЯреНрдЯреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рдЖрдкрдХреЗ рддреИрд░рд╛рдХреА рдЪрдбреНрдбреА рдореЗрдВ рд░реЗрдд рд╣реЛрдЧрд╛ред
рд░рдВрдЧ рд░реВрдкрдХ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рд░рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдпрд╣ рдПрдХ рд░реВрдкрдХ рд╣реИ, рдПрдХ рд╕рд╛рд╣рд┐рддреНрдпрд┐рдХ рдЙрдкрдХрд░рдг рд╣реИред рднрд╛рдбрд╝ рдореЗрдВ рдЬрд╛рдУ - рдпрд╣ рдкреЗрдЯ рдкрд░ рд╕рд┐рддрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рджреМрдбрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрджреЗрд╣ рд╣реИ ...
рд▓рд╛рд▓ рдХрд╛рд░реНрдп - рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ
рдпрджрд┐ рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ Node.js рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди (рдХреЙрд▓рдмреИрдХ) рдХреЛ "рд░рд┐рдЯрд░реНрди" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ , рддреЛ рдЖрдк рдПрдХ рд▓рд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдирд┐рдпрдореЛрдВ рдХреА рдЗрд╕ рд╕реВрдЪреА рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╡реЗ рдореЗрд░реЗ рд░реВрдкрдХ рдореЗрдВ рдХреИрд╕реЗ рдлрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВ:
- рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдПрдХ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдмрджрд▓реЗ рдореЗрдВ, рд╡реЗ рдХреЙрд▓рдмреИрдХ рдХрд╣рддреЗ рд╣реИрдВред
- рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХреЙрд▓рдмреИрдХ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдиреЗ рдЙрдиреНрд╣реЗрдВ рджрд┐рдпрд╛ рдерд╛ред
- рдЖрдк рдХрд┐рд╕реА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕реЗ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдкрд░рд┐рдгрд╛рдо рдХреЛ рддрдм рддрдХ рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддреЗ рдЬрдм рддрдХ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓рдмреИрдХ рдХреЗ рдХрд╛рд░рдг рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдирдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ
try/catch
рдмреНрд▓реЙрдХ рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдЕрдиреНрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред - Node.js рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХрд░реНрдиреЗрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рд╡рд╛рдкрд╕ рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЛрдВ рдореЗрдВ
_Sync()
рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред)
рдЬрдм рд▓реЛрдЧ "рдХреЙрд▓рдмреИрдХ рдирд░рдХ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреА рднрд╛рд╖рд╛ рдореЗрдВ "рд▓рд╛рд▓" рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред рдЬрдм рд╡реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП 4089 рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рддреЗ рд╣реИрдВ (2019 рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 11217 - рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдиреНрд╕рд▓реЗрдЯрд░), рддреЛ рд╡реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрддрд░ рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдП рд╣реИрдВред
рдореИрдВ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдмреЗрд╣рддрд░ рд╣реИ
рдЕрдиреБрд╡рд╛рдж рдореЗрдВ: "рдореИрдВ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдмреЗрд╣рддрд░ рд╣реИ" рд╢реАрд░реНрд╖рдХ рд╕реЗ рд╢рдмреНрдж рдФрд░ рдЕрдиреБрднрд╛рдЧ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдирд╛рдЯрдХ рдЦреЛ рдЧрдпрд╛ рд╣реИ
Node.js рдХреЗ рд▓реЛрдЧреЛрдВ рдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓рдмреИрдХ рдЪреЛрдЯ рд▓рдЧреА рд╣реИ, рдФрд░ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рдереЗред рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ promises
, рдЬрд┐рд╕реЗ рдЖрдк рдЙрдкрдирд╛рдо futures
рджреНрд╡рд╛рд░рд╛ рднреА рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред
рд░реВрд╕реА рдЖрдИрдЯреА рдореЗрдВ, "рд╡рд╛рджреЛрдВ" рдХреЛ "рд╡рд╛рджреЗ" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдкреЗрдкрд░ - "рд╡рд╛рджреЗ" рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рдереЗред "рдлреНрдпреВрдЪрд░реНрд╕" рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реИрд╕реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ "рд╡рд╛рдпрджрд╛" рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рддреНрддреАрдп рд╕реНрд▓реИрдВрдЧ рдХреЗ рдХрдмреНрдЬреЗ рдореЗрдВ рд╣реИред
Promis рдХреЙрд▓рдмреИрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╣реИред рдпрджрд┐ рдЖрдк рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓рдмреИрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдХреЙрд▓рдмреИрдХ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ, рддреЛ future
рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЕрд╡рддрд╛рд░ рд╣реИред рдпрд╣ рдПрдХ рдореВрд▓ рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рд╣реИред
рдореБрдЭреЗ рдмрд╕ рдлреИрдВрд╕реА рд╢рдмреНрджреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдорд┐рд▓рд╛ рдФрд░ рдпрд╣ рдПрдХ рдорд╣рд╛рди рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдпрд╣ рд╕рд╛рдБрдк рдХрд╛ рддреЗрд▓ рд╣реИ ред рд╡рд╛рджреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЗрдЦрди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВред рд╡реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд░рдЪрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд┐рдпрдо 4 рдереЛрдбрд╝рд╛ рдХрдо рдХрдареЛрд░ рд╣реИред
рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреЗрдЯ рдпрд╛ рдХрдорд░ рдореЗрдВ рдПрдХ рд╣рд┐рдЯ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рддрд░рд╣ рд╣реИред рд╣рд╛рдВ, рдпрд╣ рдЗрддрдирд╛ рджреБрдЦ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдЗрд╕ рддрд░рд╣ рдХреА рдкрд╕рдВрдж рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЖрдк рдЕрднреА рднреА рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдпрд╛ рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдкреНрд░рдмрдВрдз рд╕рдВрдЪрд╛рд▓рдХред рдЖрдк рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬреЛ рд╕рдордХрд╛рд▓рд┐рдХ рдХреЛрдб рд╕реЗ future
рд▓реМрдЯрд╛рддрд╛ рд╣реИред (рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдЕрдЧрд▓реЗ рдЕрдиреБрдЪрд░ рдПрдХ рдЯрд╛рдЗрдо рдорд╢реАрди рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕ рдкрд▓ рдореЗрдВ рдЖрдкрдиреЗ рдХрд┐рдпрд╛ рдерд╛, рдЙрд╕ рд╕рдордп рдкрд░ рд▓реМрдЯреЗрдВ рдФрд░ рдХрд╛рд░рдг # 2 рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЪреЗрд╣рд░реЗ рдкрд░ рдПрдХ рдкреЗрдВрд╕рд┐рд▓ рдЪрд┐рдкрдХрд╛рдПрдВред)
рд╡рд╛рджреЗ рдЕрдм рднреА рдЖрдкрдХреА рджреБрдирд┐рдпрд╛ рдХреЛ рд╕рднреА рдЖрдиреЗ рд╡рд╛рд▓реА рдкреАрдбрд╝рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рднрд▓реЗ рд╣реА рдЖрдкрдХреА рднрд╛рд╖рд╛ promises
рдпрд╛ futures
рдХрд╛ рд╕рдорд░реНрдерди promises
, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдореЗрд░реА рднрд░рдкрд╛рдИ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред
(рд╣рд╛рдВ, рдЗрд╕рдореЗрдВ рд╡рд╣ рдбрд╛рд░реНрдЯ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЯреАрдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ )
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓рд┐рдВрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛
рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рд╣реИ
рд╕реА # рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╢рд╛рдпрдж рдЖрддреНрдорд╕рдВрддреБрд╖реНрдЯ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреАрдбрд╝рд┐рдд рдмрди рд░рд╣реЗ рд╣реИрдВ рд╣реЗрд▓реНрд╕рдмрд░реНрдЧ рдФрд░ рдХрдВрдкрдиреА рд╕рдм рдХреБрдЫ рдЫрд┐рдбрд╝рдХрддреА рд╣реИ рдФрд░ рднрд╛рд╖рд╛ рдХреЛ рдЪреАрдиреА рдХреЗ рд╕рд╛рде рдЫрд┐рдбрд╝рдХрддреА рд╣реИ )ред C # рдореЗрдВ, рдЖрдк рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП await
рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдкреНрдпрд╛рд░рд╛ рд╕рд╛ рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдЖрдк рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ await
рдХреЙрд▓ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреБрдо рдкрд╛рдЧрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реЛред рдЕрдкрдиреЗ рдирдП рд░реИрдкрд░ рдПрд▓реНрдмрдо рдХреЗ рд▓рд┐рдП рд░реБрдкрдпреЗ рдХреА рддрд░рд╣ рдмрд╛рд░рд┐рд╢ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВред
Async-wait рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдбрд╛рд░реНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рд▓реЗрдХрд┐рди, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдПрдХ "рд▓реЗрдХрд┐рди" рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рд╣реИред рд▓реЗрдХрд┐рди ... рдЖрдк рдЕрднреА рднреА рджреБрдирд┐рдпрд╛ рдХреЛ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдмрд╛рдВрдЯрддреЗ рд╣реИрдВред рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЕрдм рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрднреА рднреА рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВред
рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рджреЛ рд░рдВрдЧ рд╣реИрдВред Async-wait рд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди # 4 рд╣реЛрддрд╛ рд╣реИ - рд╡реЗ рдХреЙрд▓рд┐рдВрдЧ рдХреЛ рд▓рд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рддреЗ рд╣реИрдВ, рдЬреЛ рдмреНрд▓реВ рдХреЙрд▓рд┐рдВрдЧ рд╕реЗ рдЕрдзрд┐рдХ рдХрдард┐рди рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдмрд╛рдХреА рдирд┐рдпрдо рдЕрднреА рднреА рдпрд╣рд╛рдБ рд╣реИрдВ:
- рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдорд╛рди рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдПрдХ рд░реИрдкрд░ (
Task<T>
C # рдпрд╛ Future<T>
рдбрд╛рд░реНрдЯ рдореЗрдВ) рдорд╛рди рдХреЗ рдЖрд╕рдкрд╛рд╕ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред - рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдмрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрд░реВрд░рдд рдХрд╛
await
ред - рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ, рдЖрдкрдХреЛ рдПрдХ рдЖрд╡рд░рдг рд╡рд╕реНрддреБ рдорд┐рд▓рддреА рд╣реИ рдЬрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЬрдм рддрдХ рдЖрдк рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рддрдм рддрдХ
await
рд╕рд╛рде рдЗрд╕реЗ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ (рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рджреЗрдЦреЗрдВ)ред - рдереЛрдбрд╝реА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рд╕рдЬрд╛рд╡рдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдо рд╕реЗ рдХрдо рд╣рдордиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред
- C # рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕реЗ рдкреБрд░рд╛рдиреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрднреА рдирд╣реАрдВ рд╣реБрдИред
Async
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реИред рдореИрдВ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдХрд┐рд╕реА рднреА рджрд┐рди рдирдЧреНрди рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП async-wait рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдЦреБрдж рд╕реЗ рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВ рдЕрдЧрд░ рд╣рдо рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдЙрдЪреНрдЪ-рдХреНрд░рдо рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдлрд┐рд░ рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд░рдВрдЧ рдЕрднреА рднреА рд╣реИ, рдЖрдкрдХреЗ рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреВрди рдмрд╣ рд░рд╣рд╛ рд╣реИред
рдХреМрди рд╕реА рднрд╛рд╖рд╛ рд░рдВрдЧ рдирд╣реАрдВ рд╣реИ?
рдЗрд╕рд▓рд┐рдП JS, Dart, C # рдФрд░ Python рдХреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЬреЗрдПрд╕ (рдФрд░ рдбрд╛рд░реНрдЯ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА) рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ core.async рдХреЗ рд╕рд╛рде рд╕рдХреНрд░рд┐рдп рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдХреНрд▓реЛрдЬреБрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рднреА рдпрд╣ рдкрдХрдбрд╝ рд╣реИ
рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдирд╣реАрдВ рд╣реИ? рдЬрд╛рд╡рд╛ред рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд╣реВрдВ? рдЖрдк рдХрд┐рддрдиреА рдмрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВ, "рд╣рд╛рдБ, рдЬрд╛рд╡рд╛ рдЕрдХреЗрд▓реЗ рдЗрд╕реЗ рд╕рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реИ"? рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣реБрдЖред рдЕрдкрдиреЗ рдмрдЪрд╛рд╡ рдореЗрдВ, рд╡реЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ futures
рдФрд░ рдПрд╕рд┐рдВрдХреНрд╕ рдЖрдИрдУ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдХрд░ рдЕрдкрдиреА рдирд┐рдЧрд░рд╛рдиреА рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдмрджрддрд░ рд╕реЗ рднреА рдмрджрддрд░ рджреМрдбрд╝ рдХреА рддрд░рд╣ рд╣реИред
рд╕рдм рдХреБрдЫ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ
C #, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рднреА рдкрд╣реБрдБрдЪ рд╕рдХрддрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рд░рдВрдЧ рд╣реЛрдирд╛ рдЪреБрдирд╛ ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡реЗ async-wait рдФрд░ рдпрд╣ рд╕рдм Task<T>
рдЬрдВрдХ рдЬреЛрдбрд╝реЗ, рдЖрдк рдмрд╕ рдирд┐рдпрдорд┐рдд рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреАрди рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ "рд░рдВрдЧ" рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ: рдЧреЛ, рд▓реБрдЖ рдФрд░ рд░реВрдмреАред
рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЖрдо рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?
рдзрд╛рд░рд╛рдУрдВред рдпрд╛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ: рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдХреЙрд▓ рдвреЗрд░ рдЬреЛ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдпреЗ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдзрд╛рдЧреЗ рдирд╣реАрдВ рд╣реИрдВред рдЧреЛ рдореЗрдВ рдХреЛрд░рд╛рдЯрд╛рдЗрдиреНрд╕, рд▓реБрдЖ рдореЗрдВ рдХреЙрд░рдЯрд╛рдЗрди рдФрд░ рд░реВрдмреА рдореЗрдВ рдзрд╛рдЧреЗ рд╕рднреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред
(рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реА # рдХреЗ рд▓рд┐рдП рдпрд╣ рдереЛрдбрд╝рд╛ рдЪреЗрддрд╛рд╡рдиреА рд╣реИ - рдЖрдк рдзрд╛рдЧреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реА # рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рджрд░реНрдж рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред)
рдкрд┐рдЫрд▓реЗ рдСрдкрд░реЗрд╢рди рдХреА рдореЗрдореЛрд░реА
рдореВрд▓рднреВрдд рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ "(рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ) рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдЙрд╕реА рд╕реНрдерд╛рди рд╕реЗ рдХреИрд╕реЗ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдП"? рдЖрдкрдиреЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рд░рд╕рд╛рддрд▓ рдореЗрдВ рдЧрд┐рд░ рдЧрдП рдФрд░ рдлрд┐рд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдИ / рдУ рдСрдкрд░реЗрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ред рддреНрд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдСрдкрд░реЗрд╢рди рдЖрдкрдХреЗ рдУрдПрд╕ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ ред рдЖрдкрдХреЛ рдЕрдкрдиреА рднрд╛рд╖рд╛ рдХреЗ рдИрд╡реЗрдВрдЯ рд▓реВрдк рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OS рд╕рдордп рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдмрд╛рд░ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рдереЗред рдЖрдорддреМрд░ рдкрд░ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднрд╛рд╖рд╛ "рдЬрд╣рд╛рдВ рдпрд╣ рдпрд╛рдж рдХрд░рддреА рд╣реИ" рдпрд╛рдж рдЖрддреА рд╣реИред рд╡рд╣ рдЙрди рд╕рднреА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рд╕рдордп рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХрдорд╛рдВрдб рдХрд╛рдЙрдВрдЯрд░ рдХрд╣рд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ I / O рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реАред рдЯрд╛рдЗрдк рдЯреНрд░рд┐рдХ -22 рдореЗрдВ рдкреВрд░реЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реБрдкрд░ рдлрд╛рд╕реНрдЯ I / O рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рд╣реБрдб рдХреЗ рддрд╣рдд рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ I / O рд╡рд╛рд▓реА рд╕рднреА рднрд╛рд╖рд╛рдПрдБ - рдпрд╛, JS рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдИрд╡реЗрдВрдЯ рд▓реВрдк - рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕ рдкрд░ рдордЬрдмреВрд░ рд╣реИрдВред
рдиреЛрдб, рдЕрдкрдиреЗ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЪрд┐рдВрдЧ рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде, рдЗрди рд╕рднреА рдХреЙрд▓ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдЬрдм рдЖрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
function makeSundae(callback) { scoopIceCream(function (iceCream) { warmUpCaramel(function (caramel) { callback(pourOnIceCream(iceCream, caramel)); }); }); }
рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЗрд╕рдХреЗ рдкреВрд░реЗ рд╕рдВрджрд░реНрдн рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреА рд╣реИред рдпрд╣ рдХреЙрд▓ рд╕реНрдЯреИрдХ рд╕реЗ рдвреЗрд░ рддрдХ, рдЬреИрд╕реЗ рдХрд┐ iceCream
рдФрд░ caramel
рдЬреИрд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИред рдбреЗрдЯрд╛ рдЕрднреА рднреА рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдвреЗрд░ рдкрд░ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдирдд рдХреЙрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреАрд╡рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд╛рдо рднреА рд╣реИ: рдирд┐рд░рдВрддрд░рддрд╛-рдЧреБрдЬрд░ рд╢реИрд▓реА
рд▓рд┐рдВрдХ рднрдпрдВрдХрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛
рдпрд╣ 70 рдХреЗ рджрд╢рдХ рдореЗрдВ рднрд╛рд╖рд╛ рд╣реИрдХрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рдВрдХрд▓рдХ рдХреЗ рд╣реБрдб рдХреЗ рддрд╣рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВред рдпрд╣ рдХреЛрдб рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рдЪрд┐рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рд╕рдВрдХрд▓рдХ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
рдХрд┐рд╕реА рдиреЗ рдХрднреА рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдРрд╕рд╛ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдиреЛрдб рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдФрд░ рдЕрдЪрд╛рдирдХ рд╣рдо рд╕рднреА рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдмреИрдХреЗрдВрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдХрд░рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдЧрд▓рдд рд░рд╛рд╕реНрддреЗ рдХреЛ рдХрд╣рд╛рдВ рдореЛрдбрд╝ рджрд┐рдпрд╛?
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд╛рджреЗ рдФрд░ futures
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрднреА рднреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рд╡рд┐рд╢рд╛рд▓ рдкрд░рддреЛрдВ рдХреЛ рдЬрдорд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рд╕рд┐рд░реНрдл рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ .then()
рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рдЙрддреНрдкрдиреНрди рд╕рдорд╛рдзрд╛рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИ
Async-wait рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрдм рдпрд╣ await
, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реАрдкреАрдПрд╕ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ C # рдореЗрдВ await
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ - "рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреАрдЪ рдореЗрдВ рд░реЛрдХреЗрдВред" await
рдмрд╛рдж рд╕рдм рдХреБрдЫ рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрди рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдкрдХреА рдУрд░ рд╕реЗ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ async-wait рдХреЛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЕрдВрджрд░ рд░рдирдЯрд╛рдЗрдо рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд▓реЛрдЬрд░ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред (рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреНрд▓реЛрдЬрд░ рдХреЛ рд░рдирдЯрд╛рдЗрдо рд╕рдкреЛрд░реНрдЯ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╡реЗ рдЧреБрдордирд╛рдо рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред C # рдореЗрдВ рдХреНрд▓реЛрдЬрд░ рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВред)
рдЖрдк рд╢рд╛рдпрдж рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдЬрдм рдореИрдВ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдкрдХреА рднрд╛рд╖рд╛ рдореЗрдВ yield
рд╣реИ? рдлрд┐рд░ рд╡рд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░ рд╕рдХрддрд╛ рд╣реИред
(рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬреЗрдирд░реЗрдЯрд░ рдФрд░ рдПрд╕рд┐рдВрдХреНрд╕-рд╡реЗрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдХ рд╣реИрдВред рдХрд╣реАрдВ-рдХрд╣реАрдВ рдореЗрд░реА рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдзреВрд▓ рднрд░реЗ рдиреБрдХреНрдХрдбрд╝ рдФрд░ рдХреНрд░реЗрди рдореЗрдВ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдирд┐рд╣рд┐рдд рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдПрд╕рд┐рдВрдХреНрд╕реНрдЯ-рд╡реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдирд░реЗрдЯрд░ рдкрд░ рдЧреЗрдо рд▓реВрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред)
рддреЛ рдореИрдВ рдХрд╣рд╛рдБ рд╣реВрдБ? рдЕрд░реЗ рд╣рд╛рдБред рддреЛ рдХреЙрд▓рдмреИрдХ, рд╡рд╛рджреЗ, рдПрд╕рд┐рдВрдХреНрд╕-рд╡реЗрдЯ рдФрд░ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде, рдЖрдк рдЕрдкрдиреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЭреБрдВрдб рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдвреЗрд░ рдкрд░ рд░рд╣рддреЗ рд╣реИрдВред
рдЖрдкрдХрд╛ рдлрд╝рдВрдХреНрд╢рди рд░рдирдЯрд╛рдЗрдо рдкрд░ рдмрд╛рд╣рд░реА рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдИрд╡реЗрдВрдЯ рд▓реВрдк рдпрд╛ I / O рдСрдкрд░реЗрд╢рди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЬрд╣рд╛рдВ рдпрд╣ рдерд╛ рд╡рд╣рд╛рдВ рд╕реЗ рдЬрд╛рд░реА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕рдм рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХреЛ рдЕрднреА рднреА рдкреВрд░реЗ рд╕реНрдЯреИрдХ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рдирд┐рдпрдо рдЖрддрд╛ рд╣реИ: "рдЖрдк рд▓рд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЗрд╡рд▓ рд▓рд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ"ред рдЖрдкрдХреЛ main()
рдпрд╛ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдореЗрдВ рдкреВрд░реЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред
рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд▓реЗрдХрд┐рди рдереНрд░реЗрдбреНрд╕ ( рд╣рд░рд╛ рдпрд╛ рдУрдПрд╕ рд╕реНрддрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдмрд╕ рдкреВрд░реЗ рдзрд╛рдЧреЗ рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд▓реМрдЯрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдУрдПрд╕ рдпрд╛ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред
рдЧреЛ рднрд╛рд╖рд╛, рдореЗрд░реА рд╕рдордЭ рдореЗрдВ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдХреЛрдИ I / O рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ, Go рдЗрд╕ coroutine рдХреЛ рдкрд╛рд░реНрдХ рдХрд░реЗрдЧрд╛ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ рдЬреЛ I / O рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рдЧреЛрд▓рдВрдЧ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ I / O рд╕рдВрдЪрд╛рд▓рди рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╕рдордХрд╛рд▓рд┐рдХ рд▓рдЧрддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╡реЗ рдмрд╕ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рддреБрд▓реНрдпрдХрд╛рд▓рди рдХрд╛ рдорддрд▓рдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИред Go- , IO . Go .
Go тАФ , . , , .
, API, , . .
, , . , . , 50% .
, , , .
Javascript -, , , JS , JS , . , JS .
, ( ) тАФ , , , async
. import threading
( , AsyncIO, Twisted Tornado, ).
, , , , , , .
, Go, Go .
, , , ( - ) , "async-await ". .
, .
, , .