рд╕реНрдХреЗрд▓реЗрдмрд▓ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред рднрд╛рдЧ 2 - рдЗрд╡реЗрдВрдЯ рдпрд╛ рдХреНрдпреЛрдВ рдпрд╣ рдЖрдкрдХреА рдЦреБрдж рдХреА рдмрд╛рдЗрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ

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

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

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

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

  1. рд╢рд╛рд╕реНрддреНрд░реАрдп OOP рдореЗрдВ рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдХрдИ рд╡рд┐рд░рд╛рд╕рдд рд╣реИред рдореИрдВ "рдкрд╡рд┐рддреНрд░ рдпреБрджреНрдз" рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХрдИ рд╡рд┐рд░рд╛рд╕рдд рд╣рдореЗрд╢рд╛ рдЦрд░рд╛рдм рд╣реЛрддреА рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбрд╛рдпрдирд╛рдорд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдХрдо рд╕реЗ рдХрдо рд╕реНрдкрд╖реНрдЯ рдпрд╛ рдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдХ рд▓рд╛ #ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЗрдПрд╕ рдореЗрдВ рднреА рд╕рдкрдирд╛ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдирд╛, рдмрдирд╛рдП рд░рдЦрдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреБрд░рд╛ рд╕рдкрдирд╛ рд╣реИред
  2. рдпрджрд┐ рд╣рдо рдЙрдЪреНрдЪ рдорд╛рдорд▓реЛрдВ рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЯреАрдПрд╕ рдмрд╕ рднрд╛рд╖рд╛ рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмреИрдХрдмреЛрди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЯреАрдПрд╕ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдПрдХ рдкреВрд░реНрдг рдПрдирд╛рд▓реЙрдЧ рд╣реИ рдФрд░ рдпрд╣ рдореЙрдбрд▓ рдФрд░ рд╡реНрдпреВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рдирд╣реАрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдо Backbone.Event рдпрд╛ рдЗрд╕рдХреЗ рдПрдирд╛рд▓реЙрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ 3 рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
  3. рдмреИрдХрдмреЛрди рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд▓рд╡рд┐рджрд╛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЯреАрдПрд╕ рдХреЗ рд╕рднреА рд▓рд╛рднред


рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреМрди рд╕реА рдШрдЯрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдирд╕реЗ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ


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

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

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

рд▓реЗрдХрд┐рди рдПрдХ рдкрд▓ рд░реБрдХрд┐рдПред рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдХреНрдпрд╛ рд╣реИ? рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдШрдЯрдирд╛ рдПрдХ рд╡рд╕реНрддреБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ - рд╢реНрд░реЗрдгреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкрд╣рд▓реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

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

рддреАрд╕рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИред рдЖрдк рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рдХреЙрд▓ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╛рдХреА рд╕рдм рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рдШрдЯрдирд╛ рдореЗрдВ рдХреЛрдИ рдПрдХ рдпрд╛ рдХрдИ рд╣реИрдВрдбрд▓рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

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

рдкрд╛рдВрдЪрд╡рд╛рдВ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рдХреЗрдПрдордПрдлрдбреАрдПрдо рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реВрдВред

рдХреЛрдбрдкреНрд▓реЗрдХреНрд╕ рдкрд░ рд╕реНрд░реЛрдд, https://tsasyncmodulesexampleapp.codeplex.com

рдкрд╣рд▓реЗ рд╡рд┐рдЪрд╛рд░


рдФрд░ рдЗрд╕рд▓рд┐рдП, рдХреЛрдИ рднреА рд╡рд╕реНрддреБ, рдШрдЯрдирд╛ рдПрдХ рд╡рд░реНрдЧ рд╣реИ, рдЖрджрд┐ред рдЗрд╕рдХрд╛ рдорддрд▓рдм 2 рдЪреАрдЬреЗрдВ рд╣реИрдВ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдШрдЯрдирд╛ рд╣реИ:

export class Event { //   Add(callback: any): void { /*    */ } Remove(callback: any): void { /*    */ } Trigger(): void { /*    */ } } 


рджреВрд╕рд░реЗ, рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╕реА # рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЪреБрдкрдХреЗ рд╕реЗ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИрдВ:

 /// <reference path="Events.ts" /> import Events = require('Framework/Events'); export class MessagesRepo { public MessagesLoaded: Events.Event = new Events.Event(); } class SomeEventSubscriber { // .    private MessagesRepo = new MessagesRepo(); public Foo() { this.MessagesRepo.MessagesLoaded.Add(function () { alert('MessagesLoaded'); }); } } 


рдпрд╛рдиреА рдПрдХ рдШрдЯрдирд╛ рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рджрд╕реНрдп рд╣реИред рди рдЬреНрдпрд╛рджрд╛ рдФрд░ рди рдХрдоред рдпрд╣ рд╣рдореЗрдВ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ:



рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдирд╣реАрдВ рд╣реИ:

1. рд╕рдЦреНрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ
2. рд╕рдВрджрд░реНрдн рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЙрд▓рдмреИрдХ рдШрдЯрдирд╛ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╣рдореЗрдВ рдХрд╣реАрдВ рднреА рдХрд┐рд╕реА рднреА рдХреЙрд▓рдмреИрдХ рдХреЛ рдмрдЪрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
3. рдЧреИрд░-рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рдкреИрд░рд╛рдореАрдЯрд░

рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ


рд╣рдо рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 0.9 рдХреЗ рдирд╡рд╛рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдЬреЗрдирд░рд┐рдХ:

 export class Event<Callback extends Function> { //    Add(callback: Callback): void { /*    */ } Remove(callback: Callback): void { /*    */ } Trigger(): void { /*    */ } } 


рдФрд░ рдЖрд╡реЗрджрди рджреЗрдЦреЗрдВ:

 /// <reference path="Events.ts" /> import Events = require('Framework/Events'); export class MessagesRepo { public MessagesLoaded: Events.Event<{ (messages: string[]): void }> = new Events.Event<{ (messages: string[]): void }>(); } class SomeEventSubscriber { // .    private MessagesRepo = new MessagesRepo(); public Foo() { this.MessagesRepo.MessagesLoaded.Add(function (messages: string[]) { alert('MessagesLoaded'); }); } } 


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб:

 public Foo() { this.MessagesRepo.MessagesLoaded.Add(function (message: string) { alert('MessagesLoaded'); }); } 


рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдЧрд╛:

Supplied parameters do not match any signature of call target:
Call signatures of types '(message: string) => void' and '(messages: string[]) => void' are incompatible:
Type 'String' is missing property 'join' from type 'string[]'


рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдХреЙрд▓рдмреИрдХ (рдареАрдХ рд╣реИ, рд╣рдореЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рд╢рд╛рдВрддрд┐ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ:

 public Foo() { this.MessagesRepo.MessagesLoaded.Add(function () { alert('MessagesLoaded'); }); } 


Callback extends Function рд╣реЛрддрд╛ рд╣реИ, рдЙрдЪрд┐рдд рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП Callback extends Function рдирд┐рд░реНрдорд╛рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЯреАрдПрд╕ рдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ Callback рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдирд╛рдо рдХреЙрд▓рдмреИрдХ рдФрд░ рд╕рджрд╕реНрдпрддрд╛ рд╕реНрдерд┐рддрд┐ рд░рд┐рдЯрд░реНрди

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

 private FooMessagesLoadedCallback = function () { alert('MessagesLoaded'); } public Foo() { this.MessagesRepo.MessagesLoaded.Add(this.FooMessagesLoadedCallback); } 


рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдПрдХ рдкреВрд░реНрдг рдорд╕реНрддрд┐рд╖реНрдХ рдЙрджреНрдпрдо рд╣реИ рдФрд░ рдЬреЗрдПрд╕ / рдЯреАрдПрд╕ рдХреА рд╕рднреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд╣рддреНрдпрд╛ рд╣реИред

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

рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ:

 export class Event<Callback extends Function> { public Add(callback: Callback): ITypedSubscription<Callback, Event<Callback>> { var that = this; var res: ITypedSubscription<Callback, Event<Callback>> = { Callback: callback, Event: that, Unsubscribe: function () { that.Remove(callback); } } /*    */ return res; } public Remove(callback: Callback): void { /*    */ } public Trigger(): void { /*    */ } } /**     .  .     . */ export interface ISubscription { Unsubscribe: { (): void }; } /**  .      callback */ export interface ITypedSubscription<Callback, Event> extends ISubscription { Callback: Callback; Event: Event; } 


рдпрд╣реА рд╣реИ, рд╣рдо рдмрд╕ рдИрд╡реЗрдВрдЯ рд╡рд┐рдзрд┐, рдХреЙрд▓рдмреИрдХ, рдФрд░ рдЖрд╡рд░рдг рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рдХрд╛рд▓реЗрдВ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЖрд╡рд░рдг рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХ "рдлрд╛рдЗрдирд▓" рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ:

 /** ,    IntelliSense ;) */ class SomeEventSubscriber { private MessagesRepo = new MessagesRepo(); /**        */ private Subscriptions: Events.ISubscription[] = []; public Foo() { //      this.Subscriptions.push(this.MessagesRepo.MessagesLoaded.Add(function () { alert('MessagesLoaded'); })); //   this.Subscriptions.push(this.MessagesRepo.ErrorHappened.Add(function (error: any) { alert(error); })); } /**             */ public Destroy() { for (var i = 0; i < this.Subscriptions.length; i++) { this.Subscriptions[i].Unsubscribe(); } this.Subscriptions = []; } } 


рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЗрд╡реЗрдВрдЯ рдкреИрд░рд╛рдореАрдЯрд░


рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдлрд┐рд░ рд╕реЗ рд╣рдо рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 export class Event<Callback extends Function, Options> { public Add(callback: Callback): ITypedSubscription<Callback, Event<Callback, Options>> { var that = this; var res: ITypedSubscription<Callback, Event<Callback, Options>> = { Callback: callback, Event: that, Unsubscribe: function () { that.Remove(callback); } } /*    */ return res; } public Remove(callback: Callback): void { /*    */ } public Trigger(options: Options): void { /*    */ } } 


рдкреНрд░рдХрд╛рд╢рдХ рд╡рд░реНрдЧ рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 export interface ErrorHappenedOptions { Error: any; } export class MessagesRepo { public MessagesLoaded: Events.Event< { (messages: string[]): void } //Callback , string[]> //Options = new Events.Event<{ (messages: string[]): void }, string[]>(); public ErrorHappened: Events.Event< { (error: ErrorHappenedOptions): void }, //Callback ErrorHappenedOptions> //Options = new Events.Event<{ (error: ErrorHappenedOptions): void }, ErrorHappenedOptions>(); } 


рдФрд░ рдЗрд╡реЗрдВрдЯ рдХреЙрд▓ рдЗрд╕ рддрд░рд╣:

 var subscriber: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1']); subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' }); 


рдЗрд╕ рдкрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдПрдХ рд╡реИрдз рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЛрдбрдкреНрд▓реЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВ ред

рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред

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

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдЧ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВ:
рднрд╛рдЧ 2.5: рд╕реНрдХреЗрд▓реЗрдмрд▓ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг - рднрд╛рдЧ 2.5ред рдмрдЧ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

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


All Articles