рдорд╛рдирд╡ рднрд╛рд╖рд╛ рдореЗрдВ "рдмреАрдЬрдЧрдгрд┐рддреАрдп рдкреНрд░рднрд╛рд╡"

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

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдмреАрдЬреАрдп рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ?


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


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



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


(рдЕрд╕реНрд╡реАрдХрд░рдг: рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╢реЛрдзрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рд╕рдХрддреА рд╣реИред рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЧрд▓рдд рд╣реИрдВ!)


рдпрд╣ рдЕрднреА рднреА рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЬрд▓реНрджреА рд╣реИ


рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмреАрдЬрдЧрдгрд┐рддреАрдп рдкреНрд░рднрд╛рд╡ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд if , рдХреЗ for рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ async/await рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ, рдЖрдк рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЕрднреА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рд╡реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рднрд╛рд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдереЗред OCaml рдореЗрдВ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкреНрд░рдЧрддрд┐ рд╣реИ, рдЬреЛ ... рдЕрднреА рднреА рдЬрд╛рд░реА рд╣реИ ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рджреЗрдЦреЗрдВ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВред


рдпрд╣ рдореБрдЭреЗ рдХреНрдпреЛрдВ рдкрд░реЗрд╢рд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?


рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдк goto рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдХреЛрдИ рдЖрдкрдХреЛ рдмрддрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ if рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдПред рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреЙрд▓рдмреИрдХ рдирд░рдХ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реЛ рдФрд░ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЖрдкрдХреЛ async/await ред рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд╣реИ рдирд╛?


рдпрджрд┐ рдЖрдк рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬреЛ рдлреИрд╢рдиреЗрдмрд▓ рдмрдирдиреЗ рд╕реЗ рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдирд╡рд╛рдЪрд╛рд░ рд╕реАрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмреАрдЬреАрдп рдкреНрд░рднрд╛рд╡реЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд▓реЗрдиреЗ рдХрд╛ рд╕рдордп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреИрд╕реЗ 1999 рдореЗрдВ async/await рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред


рдЦреИрд░, рдпреЗ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рднрд╛рд╡ рд╣реИрдВ?


рдирд╛рдо рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИред рдпрджрд┐ рдЖрдк try/catch рдмреНрд▓реЙрдХ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдмреАрдЬреАрдп рдкреНрд░рднрд╛рд╡ рдХреЛ рд╕рдордЭреЗрдВрдЧреЗред


рдЖрдЗрдП try/catch рдпрд╛рдж try/catch ред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдФрд░ catch рдмреАрдЪ рдХрдИ рдиреЗрд╕реНрдЯреЗрдб рдХреЙрд▓ рд╣реИрдВ:


 function getName(user) { let name = user.name; if (name === null) { throw new Error('  '); } return name; } function makeFriends(user1, user2) { user1.friendNames.add(getName(user2)); user2.friendNames.add(getName(user1)); } const arya = { name: null }; const gendry = { name: '' }; try { makeFriends(arya, gendry); } catch (err) { console.log(",   : ", err); } 

рд╣рдо getName рдЕрдВрджрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ "рдкреЙрдк рдЕрдк" makeFriends рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдХрдЯрддрдо catch рддрдХ makeFriends рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ try/catch рдХреА рдореБрдЦреНрдп рд╕рдВрдкрддреНрддрд┐ рд╣реИред рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


C рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрдм рдЖрдк try/catch рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдордзреНрдпрд╡рд░реНрддреА рд╕реНрддрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдкрд╡рд╛рдж рдЕрдкрдиреЗ рдЖрдк рдкреЙрдк рдЕрдк рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред


рдмреАрдЬрдЧрдгрд┐рддреАрдп рдкреНрд░рднрд╛рд╡реЛрдВ рд╕реЗ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реИ?


рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬреИрд╕реЗ рд╣реА рд╣рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦ рдкрд╛рдПрдВрдЧреЗред рдЬрдм рд╣рдо рдЦреБрдж рдХреЛ catch рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред


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


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


 function getName(user) { let name = user.name; if (name === null) { name = perform 'ask_name'; } return name; } function makeFriends(user1, user2) { user1.friendNames.add(getName(user2)); user2.friendNames.add(getName(user1)); } const arya = { name: null }; const gendry = { name: '' }; try { makeFriends(arya, gendry); } handle(effect) { if (effect === 'ask_name') { resume with ' '; } } 

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


throw рдмрдЬрд╛рдп throw рд╣рдо рдХрд╛рд▓реНрдкрдирд┐рдХ рдХреАрд╡рд░реНрдб perform рдЙрдкрдпреЛрдЧ perform ред рдЗрд╕реА рддрд░рд╣, try/catch рдмрдЬрд╛рдп try/catch рд╣рдо рдХрд╛рд▓реНрдкрдирд┐рдХ try/handle рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕рдЯреАрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдпрд╣рд╛рдБ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ - рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ред


рддреЛ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдЖрдЗрдП рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред


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


 function getName(user) { let name = user.name; if (name === null) { name = perform 'ask_name'; } return name; } 

рдЬрдм рд╣рдо рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрдВрдЬрди рдХреЙрд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рдирд┐рдХрдЯрддрдо try/catch рд╣реИрдВрдбрд▓рд░ рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣, рдЬрдм рд╣рдо рдХрд┐рд╕реА рдкреНрд░рднрд╛рд╡ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ , рддреЛ рдЗрдВрдЬрди рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рдХрдЯрддрдо try/handle рдЗрдлреЗрдХреНрдЯ рд╣реИрдВрдбрд▓рд░ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛:


 try { makeFriends(arya, gendry); } handle(effect) { if (effect === 'ask_name') { resume with ' '; } } 

рдпрд╣ рдкреНрд░рднрд╛рд╡ рд╣рдореЗрдВ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рд╣реЛрдиреЗ рдкрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдпрд╣рд╛рдВ рдирдпрд╛ (рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ) рдХреЗ resume with рдХрд╛рд▓реНрдкрдирд┐рдХ resume with :


 try { makeFriends(arya, gendry); } handle(effect) { if (effect === 'ask_name') { resume with ' '; } } 

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк try/catch рд╕рд╛рде рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣ рд╣рдореЗрдВ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓рд╛ рдерд╛ рдФрд░ рд╣реИрдВрдбрд▓рд░ рд╕реЗ рдХреБрдЫ рд╡рд╛рдкрд╕ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдерд╛ ред : -рдУ


 function getName(user) { let name = user.name; if (name === null) { // 1.     name = perform 'ask_name'; // 4. ...     (name   ' ') } return name; } // ... try { makeFriends(arya, gendry); } handle(effect) { // 2.    ( try/catch)  (effect === 'ask_name') { // 3. ,      (    try/catch!) resume with ' '; } } 

рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реЛрдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рд╡рд╛рдкрд╕реА рдХреЗ рд╕рд╛рде try/catch рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред


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



рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдХреЛрдИ рд░рдВрдЧ рдирд╣реАрдВ рд╣реИ


рдмреАрдЬрдЧрдгрд┐рддреАрдп рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╣реИрдВред


async/await рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ async/await рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдПрдХ "рд░рдВрдЧ" ( рд░реВрд╕реА ) рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╣рдо рд╕рд┐рд░реНрдл getName рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдмрд┐рдирд╛ makeFriends рдХреЛ рд╕рдВрдХреНрд░рдорд┐рдд makeFriends рдФрд░ async рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдиред рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджрд░реНрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрднреА-рдХрднреА рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рдХрднреА-рдХрднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред



 //       ... async getName(user) { // ... } //       ... async function makeFriends(user1, user2) { user1.friendNames.add(await getName(user2)); user2.friendNames.add(await getName(user1)); } //   ... async getName(user) { // ... } 

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрдирд░реЗрдЯрд░ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рдпрджрд┐ рдЖрдк рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдордзреНрдпрд╡рд░реНрддреА рдХреЛрдб рдХреЛ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЦреИрд░, рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реИ?


рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╣рдо async / рдЗрдВрддрдЬрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдПрдВ рдФрд░ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ:


 function getName(user) { let name = user.name; if (name === null) { name = perform 'ask_name'; } return name; } function makeFriends(user1, user2) { user1.friendNames.add(getName(user2)); user2.friendNames.add(getName(user1)); } const arya = { name: null }; const gendry = { name: '' }; try { makeFriends(arya, gendry); } handle(effect) { if (effect === 'ask_name') { resume with ' '; } } 

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкреНрд░рднрд╛рд╡ рд╣реИрдВрдбрд▓рд░ "рд╕реНрдкреЗрдпрд░ рдирд╛рдо" рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?


рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо getName рдпрд╛ makeFriends рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдкреНрд░рднрд╛рд╡ рд╣реИрдВрдбрд▓рд░ рд╕реЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕рд▓реА рдХреЗ resume with рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 function getName(user) { let name = user.name; if (name === null) { name = perform 'ask_name'; } return name; } function makeFriends(user1, user2) { user1.friendNames.add(getName(user2)); user2.friendNames.add(getName(user1)); } const arya = { name: null }; const gendry = { name: '' }; try { makeFriends(arya, gendry); } handle(effect) { if (effect === 'ask_name') { setTimeout(() => { resume with ' '; }, 1000); } } 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж resume with рдХрд╣рддреЗ рд╣реИрдВред рдЖрдк resume with рдХреЙрд▓рдмреИрдХ рдХреЗ resume with рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (рдЖрдк рдЗрд╕ рдмрд╛рдд рдХреЛ '' рдПрдХ рдмрд╛рд░ рд╕реАрдорд┐рдд рдирд┐рд░рдВрддрд░рддрд╛ '' рдХрд╣рдХрд░ рдорд┐рддреНрд░реЛрдВ рдХреЛ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рд╢рдмреНрдж рдХрд╛ рдирд┐рд░рдиреНрддрд░ рдЬрд╛рд░реА рд░рд╣рдирд╛ рдЕрднреА рддрдХ рд░реВрд╕реА рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред)ред


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


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



рд╕реНрд╡рдЪреНрдЫрддрд╛ рдиреЛрдЯ


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


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


рд╡реЗ рдЖрдкрдХреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:


 function enumerateFiles(dir) { const contents = perform OpenDirectory(dir); perform Log('Enumerating files in ', dir); for (let file of contents.files) { perform HandleFile(file); } perform Log('Enumerating subdirectories in ', dir); for (let directory of contents.dir) { //           enumerateFiles(directory); } perform Log('Done'); } 

рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рдкреЗрдЯреЗрдВ рдХрд┐ рдпрд╣ "рдЖрдк" рдХреИрд╕реЗ рдХрд░реЗрдВ:


 let files = []; try { enumerateFiles('C:\\'); } handle(effect) { if (effect instanceof Log) { myLoggingLibrary.log(effect.message); resume; } else if (effect instanceof OpenDirectory) { myFileSystemImpl.openDir(effect.dirName, (contents) => { resume with contents; }); } else if (effect instanceof HandleFile) { files.push(effect.fileName); resume; } } //  `files`     

рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпреЗ рд╣рд┐рд╕реНрд╕реЗ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрди рд╕рдХрддреЗ рд╣реИрдВ:


 import { withMyLoggingLibrary } from 'my-log'; import { withMyFileSystem } from 'my-fs'; function ourProgram() { enumerateFiles('C:\\'); } withMyLoggingLibrary(() => { withMyFileSystem(() => { ourProgram(); }); }); 

Async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдмреАрдЬреАрдп рдкреНрд░рднрд╛рд╡ рдХреЛ "рдордзреНрдпрд╡рд░реНрддреА" рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЕрдВрджрд░ рд╣рдорд╛рд░реА рдХреЙрд▓ рдЧрд╣рд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рднрд╛рд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рднрд╛рд╡ рд╣реИрдВрдбрд▓рд░ рд╣реИ рдХрд┐ рдпрд╣ рдКрдкрд░ рдХрд╣реАрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░рд╛ рдХреЛрдб рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред


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


 import { withFakeFileSystem } from 'fake-fs'; function withLogSnapshot(fn) { let logs = []; try { fn(); } handle(effect) { if (effect instanceof Log) { logs.push(effect.message); resume; } } // Snapshot  . expect(logs).toMatchSnapshot(); } test('my program', () => { const fakeFiles = [ /* ... */ ]; withFakeFileSystem(fakeFiles, () => { withLogSnapshot(() => { ourProgram(); }); }); }); 

рдЪреВрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ "рд░рдВрдЧ" рдирд╣реАрдВ рд╣реИ (рдордзреНрдпрд╡рд░реНрддреА рдХреЛрдб рдореЗрдВ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдирд╣реАрдВ рд╣реИ), рдФрд░ рдкреНрд░рднрд╛рд╡ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреА рд░рдЪрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ (рд╡реЗ рдиреЗрд╕реНрдЯреЗрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ), рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рд╕рд╛рд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред



рдкреНрд░рдХрд╛рд░ рдиреЛрдЯ


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


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



рдХреНрдпрд╛ рдореБрдЭреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмреАрдЬрдЧрдгрд┐рддреАрдп рдкреНрд░рднрд╛рд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?


рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рд╡реЗ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИрдВ, рдФрд░ рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИрдВред


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЙрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рджреБрд░реНрд▓рдн рд╣реИ рдФрд░ рдЬрд╣рд╛рдВ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ perform Timeout(1000), perform Fetch('http://google.com') , рдФрд░ perform ReadFile('file.txt') , рдФрд░ рдЖрдкрдХреА рднрд╛рд╖рд╛ рдореЗрдВ "рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди" рдФрд░ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИ, рдлрд┐рд░ рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рд╢рд╛рдпрдж рдпрд╣ рднрд╛рд╖рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рднреА рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдЧреА!



рд░рд┐рдПрдХреНрдЯ рд╕реЗ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реИ?


рдмрд╣реБрдд рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдПрдХ рдЧреНрд▓реЛрдм рдкрд░ рдЙрд▓реНрд▓реВ рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реВрдВред


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


 function MovieDetails({ id }) { //         ? const movie = movieCache.read(id); } 

(рд░рд┐рдкреЛрд░реНрдЯ рдХреБрдЫ рднрд┐рдиреНрди API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред)


рдпрд╣ рдХреЛрдб " Suspense " рдирд╛рдордХ рдбреЗрдЯрд╛ рдирдореВрдиреЛрдВ рдХреЗ рд░рд┐рдПрдХреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рддрд╣рдд рд╣реИред рдпрд╣рд╛рдВ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐, рдбреЗрдЯрд╛ рдЕрднреА рддрдХ рдореВрд╡реАрдЪреЗрдЪ рдореЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЙрд▓ рдЯреВ рд░реАрдб () рдереНрд░реЛ рдкреНрд░реЙрдорд┐рд╕ (рд╣рд╛рдВ, рдереНрд░реЛ рдкреНрд░реЙрдорд┐рд╕ - рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рдХреЛ рдирд┐рдЧрд▓рдирд╛ рд╣реЛрдЧрд╛)ред рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИред рд░рд┐рдПрдХреНрдЯ рдЗрд╕ рд╡рд╛рджреЗ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╛рдж рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдлреЗрдВрдХреЗ рдЧрдП рд╡рд╛рджреЗ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдШрдЯрдХ рдкреЗрдбрд╝ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред


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


рд╣реБрдХ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдмреАрдЬреАрдп рдкреНрд░рднрд╛рд╡реЛрдВ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ: рдпреВрдЬрд╝рд╕реНрдЯреЗрдЯ рдХреЙрд▓ "рдкрддрд╛" рдХрд╣рд╛рдБ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ?


 function LikeButton() { //  useState ,    ? const [isLiked, setIsLiked] = useState(false); } 

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рд╕рдордЭрд╛рдпрд╛: рд░рд┐рдПрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реНрдерд┐рддрд┐ "рд╡рд░реНрддрдорд╛рди рдбрд┐рд╕реНрдкреИрдЪрд░" рд╣реИ, рдЬреЛ рдЙрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ react-dom )ред рдЗрд╕реА рддрд░рд╣, рдПрдХ рд╡рд░реНрддрдорд╛рди рдШрдЯрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬреЛ рд▓рд╛рдЗрдХрдмрдЯрди рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


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


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


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


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ throw I / O рдЗрдлреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕рдиреНрдирд┐рдХрдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдмрд╢рд░реНрддреЗ рдХрд┐ рдХреЛрдб рдХреЛ рдмрд╛рдж рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рддрдХ рдпрд╣ рд╕реАрдкреАрдпреВ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИ), рдФрд░ рдЪрд░ рдХреНрд╖реЗрддреНрд░ " рдбрд┐рд╕реНрдкреИрдЪрд░ "рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдмрд╣рд╛рд▓ / рдЕрдВрдд рдореЗрдВ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рднрд╛рд╡ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд╕рдиреНрдирд┐рдХрдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рдЖрдк рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреА "рдкрд╛рд░рджрд░реНрд╢реА" рдкреНрд░рдХреГрддрд┐ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣ "рдареАрдХ рд╣реИ, рдпрд╣ рд╣реИ ..."


рдФрд░ рдХрд╣рд╛рдВ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ


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


рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдХрднреА рдереЛрдХ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рд▓рдЧреЗрдВрдЧреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 2025 рддрдХ рдореБрдЦреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдореЗрдВ рднреА рдЬрдбрд╝ рдирд╣реАрдВ рд▓реЗрдиреЗ рдкрд░ рдореБрдЭреЗ рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрдЧреАред рдкрд╛рдВрдЪ рд╕рд╛рд▓ рдореЗрдВ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдПрдВ!


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



рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдпрд╣ рднреА рдмрддрд╛рдпрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкрд╣рд▓реВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рд╣реИ), рддреЛ рдЖрдк рдХреЙрдорди рд▓рд┐рд╕реНрдк рдореЗрдВ рдПрдХ рд╢рд░реНрдд рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рддрдХрдиреАрдХ рдХрд╛ рдПрдХ рдкреВрд░реНрд╡ рдЙрдкрдпреЛрдЧ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред , , call/cc .

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


All Articles