рдЬреЗрдПрд╕ рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдХреНрд╡рд╛рдВрдЯрдо рдпрд╛рдВрддреНрд░рд┐рдХреА

рд╣реИрд▓реЛ, рдореЗрд░рд╛ рдирд╛рдо рджрд┐рдорд┐рддреНрд░реА рдХрд╛рд░реНрд▓реЛрд╡реНрд╕реНрдХреА рд╣реИ рдФрд░ рдореИрдВ ... рдмреЗрд░реЛрдЬрдЧрд╛рд░ред рдЗрд╕рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдВрдЧреАрдд, рдЦреЗрд▓, рд░рдЪрдирд╛рддреНрдордХрддрд╛, рднрд╛рд╖рд╛рдПрдВ, рдЬреЗрдПрд╕-рд╕рдореНрдореЗрд▓рди рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЦрд╛рд▓реА рд╕рдордп рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдХрдИ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреА рдЫреЛрдЯреА $mol_fiber рдореЗрдВ рд▓рдВрдмреА рдЧрдгрдирд╛ рдХреЗ рдЕрд░реНрдз-рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рднрд╛рдЬрди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирд╡реАрдирддрдо рд╢реЛрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓рдШреБ рдкреБрд╕реНрддрдХрд╛рд▓рдп $mol_fiber ред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рд╣рдо рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд╣рд▓ рдХрд░реЗрдВрдЧреЗред


рдХреНрд╡рд╛рдВрдЯрд╛!


рдпрд╣ рд╣реЛрд▓реАрдЬреЗрдПрд╕ 2018 рдкрд╛рдЗрдЯрд░ рдкрд░ рдПрдкреЙрдирд╛рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдПрдХ рдкрд╛рда рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЖрдк рдЗрд╕реЗ рдпрд╛ рддреЛ рдПрдХ рд▓реЗрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ , рдпрд╛ рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ , рдпрд╛ рдПрдХ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред


рдореБрджреНрджрд╛: рдХрдо рдЬрд╡рд╛рдмрджреЗрд╣реА


рдпрджрд┐ рд╣рдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 60 рдлреНрд░реЗрдо рд╕реНрдерд┐рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 16 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреА рдПрдХ рдЯреНрд░рд┐рдлрд╝рд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред


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


рдХрдо рдЬрд╡рд╛рдмрджреЗрд╣реА


рдореБрджреНрджрд╛: рдХреЛрдИ рдмрдЪ рдирд╣реАрдВ


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


рдкреВрд░реНрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ


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


рдореИрдВ рддреЗрдЬ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ


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


рд╢рд╛рдВрдд рдХрд╛рд░


рд╕рдорд╕реНрдпрд╛: рдХреЛрдИ рд╕рдВрдЧрддрд┐ рдирд╣реАрдВ


рдЬрдм рдХреНрд░реЙрд╕рд┐рдВрдЧ рдкрд░ рдПрдХ рдХрд┐рд▓реЛрдореАрдЯрд░ рдЯреНрд░реЗрди рдХрд╛ рдХрдмреНрдЬрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЦрдбрд╝реЗ рд╣реЛрдХрд░ рджрд╕ рдорд┐рдирдЯ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдЖрдкрдиреЗ рд╕реНрдкреЛрд░реНрдЯреНрд╕ рдХрд╛рд░ рдЦрд░реАрджреА рд╣реИ, рд╣реИ рдирд╛?


рддреЗрдЬ рдкреНрд░рддреАрдХреНрд╖рд╛ рдзреАрдореА


рдФрд░ рдЕрдЧрд░ рдпрд╣ рдЯреНрд░реЗрди рдкреНрд░рддреНрдпреЗрдХ 100 рдореАрдЯрд░ рдХреА 10 рдЯреНрд░реЗрдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдлрд┐рд╕рд▓рдиреЗ рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рд▓рдЧреЗрдВрдЧреЗ рддреЛ рдпрд╣ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛! рдЖрдкрдХреЛ рддрдм рдЗрддрдиреА рджреЗрд░ рдирд╣реАрдВ рд╣реЛрдЧреАред


рддреЛ рдЕрдм рдЬреЗрдПрд╕ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ?


рд╕рдорд╛рдзрд╛рди: рд╢реНрд░рдорд┐рдХ


рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИ: рдЪрд▓реЛ рдмрд╕ рд╕рднреА рдЬрдЯрд┐рд▓ рдЧрдгрдирд╛рдУрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ WebWorkers рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реИред


рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рддрд░реНрдХ


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


рд╢реНрд░рдорд┐рдХ: рдореБрджреНрджреЗ: (рдбреА) рд╕реАрд░рд┐рдпрд▓


рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдЙрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рднреЗрдЬрдХрд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдмрд╛рдЗрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВ, рджреВрд╕рд░реА рдзрд╛рд░рд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдПрдХ рдереНрд░реЗрдб рдХреЗ рднреАрддрд░ рдПрдХ рд╕реАрдзреА рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИред


(рджреЗ) рдХреНрд░рдордмрджреНрдзрддрд╛


рд╢реНрд░рдорд┐рдХ: рдореБрджреНрджреЗ: рдХреЗрд╡рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ


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


рд╕рдВрджреЗрд╢ рдХреА рдХрддрд╛рд░


рд╢реНрд░рдорд┐рдХ: рдореБрджреНрджреЗ: рд╕реАрдорд┐рдд рдПрдкреАрдЖрдИ


рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдкреАрдЖрдИ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред


  • рдбреЛрдо, рд╕реАрдПрд╕рдПрд╕рдУрдПрдо
  • рдХреИрдирд╡рд╛рд╕
  • рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди
  • рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рд╕реНрдерд╛рди
  • HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рд┐рдВрдХ рдХрд░реЗрдВ
  • XMLHttpRequest.responseXML
  • рдЦрд┐рдбрд╝рдХреА

рд╢реНрд░рдорд┐рдХ: рдореБрджреНрджреЗ: рд░рджреНрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ


рдФрд░ рдлрд┐рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реЛрдХрд░ рдореЗрдВ рдЧрдгрдирд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред


рд░реЛрдХреЛ!


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


рд╕рдорд╛рдзрд╛рди: рд░рд┐рдПрдХреНрдЯ рдлрд╛рдЗрдмрд░


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


рдореБрд╢реНрдХрд┐рд▓ рд╡рд┐рдХрд▓рд╛рдВрдЧрддрд╛ Fi рддрд░реНрдХ


рдореИрдВ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛, рдЬрд┐рдирдХреА рд╡рдЬрд╣ рд╕реЗ рдпрд╣ рдЖрдкрдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ..


рд░рд┐рдПрдХреНрдЯ рдлрд╛рдЗрдмрд░: рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЕрдЧрд░ рдЖрдк рд░рд┐рдПрдХреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдВрдЧреБрд▓рд░, рд╡реАрдпреВ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд░рд┐рдПрдХреНрдЯ рдлрд╛рдЗрдмрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реИред


рдкрд░реНрдпрд╛рдкреНрдд рдПрд╡рд░реАрд╡реЗрдпрд░!


рд░рд┐рдПрдХреНрдЯ рдлрд╛рдЗрдмрд░: рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдкрд╛рджрди


рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ - рдХреЗрд╡рд▓ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкрд░рдд рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред рдЖрд╡реЗрджрди рдХреЗ рдЕрдиреНрдп рд╕рднреА рдкрд░рддреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд░рд┐рдорд╛рдг рдХреЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЗрддрдиреА рдЬрд▓реНрджреА рдирд╣реАрдВ!


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


рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд╛рдЗрдмрд░: рдорд╛рддреНрд░рд╛ рдХрд╛ рдард╣рд░рд╛рд╡ рдЕрдХреНрд╖рдо рд╣реИ


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


рд╡рд┐рдкрдгрди рдЬрд╛рд▓


рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрд░рд┐рдорд╛рдгреАрдХрд░рдг рдЕрднреА рднреА рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЪреАрдЬ рд╣реИред рд╕рд╛рд╡рдзрд╛рди!


рд░рд┐рдПрдХреНрдЯ рдлрд╛рдЗрдмрд░: рдбреАрдмрдЧ рджрд░реНрдж рд╣реИ


рдЬрдм рдЖрдк рдкрд░рд┐рдорд╛рдгреАрдХрд░рдг рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЙрд▓рд╕реНрдЯреИрдХ рдЖрдкрдХреЗ рдХреЛрдб рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рдЬреЛ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред


рдбреАрдмрдЧрд┐рдВрдЧ рдХрд╛ рд╕рд╛рд░рд╛ рджрд░реНрдж


рд╕рдорд╛рдзрд╛рди: рдкрд░рд┐рдорд╛рдгреАрдХрд░рдг


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


рдЪрд╛рд░реНрдЯ


рдКрдкрд░ рдЖрдк рдПрдХ рд▓рдВрдмреА рдЧрдгрдирд╛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдиреЗ рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреЛ 100ms рд╕реЗ рдЕрдзрд┐рдХ рд░реЛрдХ рджрд┐рдпрд╛ред рдФрд░ рдиреАрдЪреЗ рд╕реЗ - рдПрдХ рд╣реА рдЧрдгрдирд╛, рд▓реЗрдХрд┐рди рд▓рдЧрднрдЧ 16ms рдХреЗ рд╕рдордп рдХреЗ рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдЯреВрдЯ рдЧрдИ, рдЬрд┐рд╕рдиреЗ рдФрд╕рддрди 60 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рджрд┐рдпрд╛ред рдЪреВрдБрдХрд┐ рд╣рдо рдЖрдо рддреМрд░ рдкрд░ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЧрдгрдирд╛ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ 16ms рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдЕрдЧреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдирд╣реАрдВ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рдирдЯрд╛рдЗрдо рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдорд╛рдкрддрд╛ рд╣реИ рдФрд░ рдЬрдм рдХреНрд╡рд╛рдВрдЯрдо рдкрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдЧрд▓реЗ рдПрдиреАрдореЗрд╢рди рдлреНрд░реЗрдо рддрдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд▓рдВрдмрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рддрдВрддреНрд░ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВред


рдХрдВрд╕реАрд▓рд░: рдлрд╛рдЗрдмрд░ - рд╕реНрдЯреИрдХрдлреБрд▓ рдХреЛрд░рдЯрд╛рдЗрди


рдЧреЛ рдФрд░ рдбреА рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ "рдПрдХ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдХреЛрд░рдЯрд╛рдЗрди" рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдореБрд╣рд╛рд╡рд░реЗ рд╣реИрдВ, рдпрд╣ рдПрдХ "рдлрд╛рдЗрдмрд░" рдпрд╛ "рдлрд╛рдЗрдмрд░" рднреА рд╣реИред


 import { Future } from 'node-fibers' const one = ()=> Future.wait( future => setTimeout( future.return ) ) const two = ()=> one() + 1 const three = ()=> two() + 1 const four = ()=> three() + 1 Future.task( four ).detach() 

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


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


рдХрдВрд╕реАрдбрд░: FSM - рд╕реНрдЯреИрдХрд▓реЗрд╕ рдХреЛрд░рдЖрдЙрдЯреНрд╕


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


 const one = ()=> new Promise( done => setTimeout( done ) ) const two = async ()=> ( await one() ) + 1 const three = async ()=> ( await two() ) + 1 const four = async ()=> ( await three() ) + 1 four() 

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


Concurrency: рдЕрд░реНрдз-рддрдВрддреБ - рдкреБрдирд░рд╛рд░рдВрдн


рдЖрдЗрдП рдлрд╛рдЗрдмрд░ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛ рдХрд┐рд╕реА рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ редред


 import { $mol_fiber_async , $mol_fiber_start } from 'mol_fiber/web' const one = ()=> $mol_fiber_async( back => setTimeout( back ) ) const two = ()=> one() + 1 const three = ()=> two() + 1 const four = ()=> three() + 1 $mol_fiber_start( four ) 

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


рдЖрдВрдХрдбрд╝реЗ


рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЫрджреНрдо рдлрд╛рдЗрдмрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗред


рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдХрд╛рд╕ рдЪрд╛рд░реНрдЯ


рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдпрд╣рд╛рдВ step рдлрд╝рдВрдХреНрд╢рди рдХрдВрд╕реЛрд▓ рдХреЛ рдХреБрдЫ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ 20ms рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреНрдп рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░рддрд╛ рд╣реИред рдФрд░ walk рдлрдВрдХреНрд╢рди рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓реЙрдЧ рдХрд░рддреЗ рд╣реБрдП рджреЛ рдмрд╛рд░ step рдХрд╣рддрд╛ рд╣реИред рдмреАрдЪ рдореЗрдВ, рдпрд╣ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдЕрдм рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рджрд╛рдИрдВ рдУрд░ рд╕реНрдпреВрдбреЛрдлрд╛рдЗрдмрд░ рд╡реГрдХреНрд╖ рдХреА рдЕрд╡рд╕реНрдерд╛ рд╣реИред


$ mol_fiber: рдХреЛрдИ рдорд╛рддреНрд░рд╛рдХрд░рдг рдирд╣реАрдВ


рдЖрдЗрдП рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ ..


рдкрд░рд┐рдзреАрдпрдХрд░рдг рдХреЗ рдмрд┐рдирд╛


рдЕрдм рддрдХ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдмреЗрд╢рдХ, рдЫрджреНрдо рдлрд╛рдЗрдмрд░ рдкреЗрдбрд╝ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб 40 рдПрдордПрд╕ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмреЗрдХрд╛рд░ рд╣реИред


$ mol_fiber: рдкрд╣рд▓реЗ рдХреИрд╢


рдЪрд▓реЛ рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдг рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдЫрджреНрдо рдлрд╛рдЗрдмрд░ рдореЗрдВ рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ редред


рдХреИрд╢ рднрд░рдирд╛


рдпрд╣рд╛рдВ рдпрд╣ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ walk рдлрд╛рдЗрдмрд░ рдХреЗ рдЕрдВрджрд░ one рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрдмрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд╣рд▓реА рдХреЙрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдХреЗ рдмрдЬрд╛рдп, Promise рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЕрдкрдирд╛ рд╕рдордп рдЯреБрдХрдбрд╝рд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдерд╛ред


$ mol_fiber: рдХреИрд╢ рджреВрд╕рд░рд╛


рдкрд╣рд▓реЗ рдлреНрд░реЗрдо рдореЗрдВ рдлреЗрдВрдХ рджреЗрдВ, Promise рдЕрдЧрд▓реЗ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рд╕реЗ walk рдлрд╛рдЗрдмрд░ рдХрд╛ рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛрдЧрд╛ред


рдХреИрд╢реЗ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ


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


рддреЛ first begin рдПрдХ рдмрд╛рд░ рдкреНрд░рд┐рдВрдЯ рдХреНрдпреЛрдВ first begin first done рдФрд░ first done рджреЛ first done ? рдпрд╣ рд╕рдм рдЖрд▓рд╕реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред console.log - рдиреЙрди-рдЖрдЗрдбрдореНрдкреЛрдЯреЗрдВрдЯ рдСрдкрд░реЗрд╢рди, рдЖрдк рдЗрд╕реЗ рдХрд┐рддрдиреА рдмрд╛рд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрдИ рдмрд╛рд░ рдпрд╣ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЬреЛ рдлрд╛рдЗрдмрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╛рдЗрдмрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рдмреЗрдХрд╛рд░ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдХреЙрд▓ рдкрд░ рд╣реИрдВрдбрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдж рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА, рдХреИрд╢ рд╕реЗ рддреБрд░рдВрдд рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред


$ mol_fiber: рдкрд╣рд▓реЗ рдмреЗрд░реЛрдЬрдЧрд╛рд░реА


рдЪрд▓реЛ рдПрдХ рдлрд╛рдЗрдмрд░ рдореЗрдВ console.log рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ ..


рдордирднрд╛рд╡рди рдХреИрд╢ рднрд░рдирд╛


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


$ mol_fiber: idempotence рджреВрд╕рд░рд╛


walk рдлрд╛рдЗрдмрд░ рдХреЗ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд░рдВрдн рдореЗрдВ, log рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ console.log рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рд╣рдо рдПрдХ рдЦрд╛рд▓реА рдХреИрд╢ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрдмрд░ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, console.log рдХреЙрд▓ рдлрд┐рд░ console.log рд╢реБрд░реВ рд╣реЛ console.log ред


рдмреЗрдХрд╛рд░ рдХреЗ рдХреИрд╢ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ


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


$ рдореЛрд▓_рдлрд╛рдЗрдмрд░: рдмреНрд░реЗрдХ


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


 if( Date.now() > $mol_fiber.deadline ) { throw new Promise( $mol_fiber.schedule ) } 

$ mol_fiber: рд╕рдордп рд╕реАрдорд╛


рдХреНрд╡рд╛рдВрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕рдордп рдореЗрдВ 8 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдареАрдХ 8 рдХреНрдпреЛрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╢реЙрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 16 рдЬрд┐рддрдиреЗ рд╣реИрдВ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдХрд┐рддрдиреА рджреЗрд░ рддрдХ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдЫреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдХреБрдЫ рднреА рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ 8ms рдХреНрд╡рд╛рдВрдЯрд╛ рдХреЗ рд╕рд╛рде рд╣рдо рдПрдХ рд╣реА рдлреНрд░реЗрдо рдореЗрдВ рдПрдХ рдФрд░ рдХреНрд╡рд╛рдВрдЯрдо рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдиреНрдпреВрдирддрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЗ рд╕рд╛рде рдХреНрд╡рд╛рдВрдЯрд╛ рдХреА рдПрдХ рддрдВрдЧ рдкреИрдХрд┐рдВрдЧ рджреЗрдЧрд╛ред


 const now = Date.now() const quant = 8 const elapsed = Math.max( 0 , now - $mol_fiber.deadline ) const resistance = Math.min( elapsed , 1000 ) / 10 // 0 .. 100 ms $mol_fiber.deadline = now + quant + resistence 

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рд╕рд┐рд░реНрдл рд╣рд░ 8ms рдкрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрд╡рд╛рдж рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рдирд░рдХ рдХреА рдПрдХ рдЫреЛрдЯреА рд╢рд╛рдЦрд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧреАред рдЗрд╕ рдбрд┐рдмрдЧрд░ рдореЛрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдХреЗрд╡рд▓ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдПрдХ рд╕реЗрдХрдВрдб рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдирд┐рдпрдВрддреНрд░рдг рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрдпрд╛, рддреЛ рдпрд╛ рддреЛ рдбрд┐рдмрдЧрд░ рдмрдВрдж рд╣реЛ рдЧрдпрд╛, рдпрд╛ рдПрдХ рднрд╛рд░реА рдЧрдгрдирд╛ рд╣реБрдИред рджреЛрдиреЛрдВ рдХреБрд░реНрд╕рд┐рдпреЛрдВ рдкрд░ рдмреИрдардиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмреАрддреЗ рд╣реБрдП рд╕рдордп рдХрд╛ 10% рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди 100 рдПрдордПрд╕ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВред рдпрд╣ рдПрдлрдкреАрдПрд╕ рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рдорд╛рдгреАрдХрд░рдг рдХреЗ рдХрд╛рд░рдг рдкрд░рд┐рдорд╛рдг рдХреЗ рдПрдХ рдХреНрд░рдо рд╕реЗ рдбрд┐рдмрдЧрд░ рдХреА рд░реЛрдХ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред


рдбрд┐рдмрдЧ: рдХреЛрд╢рд┐рд╢ / рдкрдХрдбрд╝


рдЪреВрдВрдХрд┐ рд╣рдо рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕ рдХреЛрдб рдХреЗ рдХрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рдбреАрдмрдЧрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ?


 function foo() { throw new Error( 'Something wrong' ) // [1] } try { foo() } catch( error ) { handle( error ) throw error // [2] } 

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


рдбрд┐рдмрдЧ: рдЕрдЦрдВрдбрд┐рдд рдШрдЯрдирд╛рдПрдБ


рдЖрдорддреМрд░ рдкрд░, рд░рдирдЯрд╛рдЗрдо рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдШрдЯрдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдирдХреИрдкреНрдб рдЕрдкрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИред


 function foo() { throw new Error( 'Something wrong' ) } window.addEventListener( 'error' , event => handle( event.error ) ) foo() 

рдмреЛрдЭрд┐рд▓рддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдРрд╕реА рдЦрд╛рдореА рд╣реИ рдХрд┐ рд╕рднреА рдЕрдкрд╡рд╛рдж рдпрд╣рд╛рдВ рдЖрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдпрд╣ рдШрдЯрдирд╛ рдХрд┐рд╕ рдлрд╛рдЗрдмрд░ рдФрд░ рдлрд╛рдЗрдмрд░ рд╕реЗ рд╣реБрдИ рд╣реИред


рдбрд┐рдмрдЧ: рд╡рд╛рджрд╛


рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рджреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╣реИрдВред


 function foo() { throw new Error( 'Something wrong' ) } new Promise( ()=> { foo() } ).catch( error => handle( error ) ) 

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


рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕: тАЛтАЛрд░рд┐рдПрдХреНрд╢рди рдлрд╛рдЗрдмрд░


рдЖрдЗрдП рдПрдХ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдореЗрдВ рдЖрдкрдХреЛ рд░рд┐рдПрдХреНрдЯ рдлрд╛рдЗрдмрд░ рд╕реЗ ..


рдЦрд╛рд▓реА рдвреЗрд░


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдмрд╣реБрдд рд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИред рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧреА рд╕реЗ, рдХреЗрд╡рд▓ рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд┐рдВрджреБ рдФрд░ рдШрдЯрдХреЛрдВ рдХреЗ рдирд╛рдо рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИрдВред рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВред


рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕: тАЛтАЛ$ mol_fiber


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


рд╕рд╛рдордЧреНрд░реА рддрдирд╛рд╡


рдпрд╣ рдЖрдВрддреЛрдВ рдХреЗ рдореВрд▓ рдвреЗрд░, рд╡рд╛рджреЛрдВ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣рдЯрд╛рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ, рдХрдВрд╕реЛрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рд┐рдореНрдордд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджрд┐рд▓рдЪрд╕реНрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред


$ mol_fiber: рд╕рдВрднрд╛рд▓


рддреЛ, рдПрдХ рдХреНрд╡рд╛рдВрдЯрдо рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдорд┐рд╕ рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


 limit() { if( Date.now() > $mol_fiber.deadline ) { throw new Promise( $mol_fiber.schedule ) } // ... } 

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


 fail( error : Error ) { if( error instanceof Promise ) { const listener = ()=> self.start() return error.then( listener , listener ) } // ... } 

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


$ mol_fiber: рдлрд╝рдВрдХреНрд╢рди


рдХрд┐рд╕реА рднреА рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдмреЗрдХрд╛рд░ рдлрд╛рдЗрдмрд░ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЗрд╕реЗ $mol_fiber_func рдореЗрдВ $mol_fiber_func ред


 import { $mol_fiber_func as fiberize } from 'mol_fiber/web' const log = fiberize( console.log ) export const main = fiberize( ()=> { log( getData( 'goo.gl' ).data ) } ) 

рдпрд╣рд╛рдВ рд╣рдордиреЗ console.log рдЗрдореНрдкреЛрдЯреЗрдВрдЯ рдмрдирд╛рдпрд╛, рдФрд░ main рдиреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдмреАрдЪ рдореЗрдВ рд░реБрдХрдирд╛ рд╕рд┐рдЦрд╛рдпрд╛ред


$ mol_fiber: рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ


рд▓реЗрдХрд┐рди рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рдХреИрд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рдП рдЕрдЧрд░ рд╣рдо try-catch рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдлрд┐рд░ рд╣рдо $mol_fiber_catch рд╕рд╛рде рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...


 import { $mol_fiber_func as fiberize , $mol_fiber_catch as onError } from 'mol_fiber' const getConfig = fiberize( ()=> { onError( error => ({ user : 'Anonymous' }) ) return getData( '/config' ).data } ) 

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


$ mol_fiber: рд╡рд┐рдзрд┐рдпрд╛рдБ


рдмреЗрд╢рдХ, рдЖрдк рди рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


 import { $mol_fiber_method as action } from 'mol_fiber/web' export class Mover { @action move() { sendData( 'ya.ru' , getData( 'goo.gl' ) ) } } 

рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ Google рд╕реЗ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдпреИрдВрдбреЗрдХреНрд╕ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ред


$ mol_fiber: рд╡рд╛рджреЗ


рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди fetch рдФрд░ рдХрд▓рд╛рдИ рдХреЗ рдПрдХ рдлреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред


 import { $mol_fiber_sync as sync } from 'mol_fiber/web' export const getData = sync( fetch ) 

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


$ mol_fiber: рдЕрдиреБрд░реЛрдз рд░рджреНрдж рдХрд░реЗрдВ


 import { $mol_fiber_async as async } from 'mol_fiber/web' function getData( uri : string ) : Response { return async( back => { var controller = new AbortController(); fetch( uri , { signal : controller.signal } ).then( back( res => res ) , back( error => { throw error } ) , ) return ()=> controller.abort() } ) } 

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


$ mol_fiber: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рджреНрдж рдХрд░реЗрдВ


рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЧрд┐рд░ рдЬрд╛рдиреЗ рдкрд░ рдЧрдгрдирд╛ рдХреЛ рд░рджреНрдж рдХрд░рдирд╛ рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП midleware рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рдПрдХ рдлрд╛рдЗрдмрд░ рдмрдирд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдореВрд▓ midleware рдЪрд▓реЗрдЧрд╛ред , , , .


 import { $mol_fiber_make as Fiber } from 'mol_fiber' const middle_fiber = middleware => ( req , res ) => { const fiber = Fiber( ()=> middleware( req , res ) ) req.on( 'close' , ()=> fiber.destructor() ) fiber.start() } app.get( '/foo' , middle_fiber( ( req , res ) => { // do something } ) ) 

$mol_fiber: concurrency


, . , 3 : , , - ..


рддреЗрдЬ рдФрд░ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЕрдиреБрд░реЛрдз


: , . . , , .


$mol_fiber: properties


, ..


Pros:
  • Runtime support isn't required
  • Can be cancelled at any time
  • High FPS
  • Concurrent execution
  • Debug friendly
  • ~ 3KB gzipped


Cons:
  • Instrumentation is required
  • All code should be idempotent
  • Longer total execution

$mol_fiber тАФ , . тАФ , . , , . , , , , . , . .


Links



Call back


рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛


: , , )


: , .


: . , .


: . , . , .


: , . , )


: , .


: - . , , .


: . , , .


: , . 16ms, ? 16 8 , 8, . , . , ┬л┬╗.


: тАФ . рдзрдиреНрдпрд╡рд╛рдж!


: . , . !


: , . .


: , , , , , / , .


: , .


: .


: , . mol.


: , , . , , , .


: .


: , . , $mol, , .


: , , . тАФ . .


: - , .


: $mol , . (pdf, ) , .


: , . , .


: , ) .


: . .


: In some places I missed what the reporter was saying. The conversation was about how to use the "Mola" library and "why?". But how it works remains a mystery for me.To smoke an source code is for the overhead.


: , .


: . , . . .


: : . - (, ). , : 16?


рд╕реЛ-рд╕реЛ : рдореИрдВрдиреЗ рдлрд╛рдЗрдмрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдореИрдВрдиреЗ рдлрд╛рдЗрдмрд░ рдХреЗ рдХрд╛рдо рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕реБрдирд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрд┐рд▓рдХреБрд▓ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рдХрд┐ рдШрд░ рдкрд░ mol_fiber рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ... рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди 60fps рдкрд░ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ 30fps рдХреЗ рд╕рд╛рде рдмрдбрд╝реЗ рдЖрд╡реЗрджрди рдкрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдХреЛрдИ рд╕рдордЭ рдирд╣реАрдВ рдереАред рдЕрдм, рдЕрдЧрд░ рд▓реЗрдЦрдХ рдиреЗ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдФрд░ рдХрдо рдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдбрд┐рдЬрд╛рдЗрди - рд░реЗрдЯрд┐рдВрдЧ рдЕрдзрд┐рдХ рд╣реЛрдЧреАред

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


All Articles