рдПрдХ рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдХрд╛ рдХрд╛рд░рдг рдХреИрд╕реЗ рдмрдирддрд╛ рд╣реИ?

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

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





рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХреНрдпрд╛ рд╣реИ?


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕реНрдореГрддрд┐ рдЬреАрд╡рди рдЪрдХреНрд░ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рддреАрди рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ:

  1. рдЖрд╡рд╢реНрдпрдХ рд╕реНрдореГрддрд┐ рдХрд╛ рдЖрд╡рдВрдЯрдиред
  2. рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ, рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВред
  3. рдЗрд╕рдХреЗ рдмрд╛рдж рдореЗрдореЛрд░реА рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдкрд░ MDN рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ - рдпрд╣ рднреНрд░рдо рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрд░реЛрдд рд╣реИред рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рдЧрд▓рдд рдЕрд░реНрде рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

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

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

рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


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

тЦН рдЭрдВрдбрд╛ рдЪрд░рдг


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


рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЪрд┐рд╣реНрдирд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЭрдВрдбреЗ рдЭреВрдареЗ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдлрд┐рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреНрд░реА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред markedрдиреЛрдб рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗрд╕рднреА рдЭрдВрдбреЗrootрд╕реЗрдЯ рд╣реИрдВtrueред рдФрд░ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЭрдВрдбреЗ рдЬреЛ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ, рдореВрд▓реНрдп рдореЗрдВ рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВfalseред

рдпрджрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдореВрд▓ рд╡рд╕реНрддреБ рд╕реЗ рдирд╣реАрдВ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЕрдкреНрд░рд╛рдкреНрдп рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред


рдкреБрди: рдкреНрд░рд╛рдкреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ = рд╕рд╣реА, рдЕрдЧрдореНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд = рдЧрд▓рдд рдХреЗ

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

тЦН рд╕рдлрд╛рдИ рдЪрд░рдг


рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЗрд╕ рдЪрд░рдг рдореЗрдВ рдореЗрдореЛрд░реА рдХреЛ рдареАрдХ рд╕реЗ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ, рд╕рднреА рдкрд╣реБрдВрдЪ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ (рдЬрд┐рдирдХреЗ рдЭрдВрдбреЗ markedрдХрд╛ рдореВрд▓реНрдп рд░рд╣рддрд╛ рд╣реИ false) рдХреЛ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдмрд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреНрд░реАред рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рдирдХреЗ рдЪрд┐рд╣реНрдирд┐рдд рдзреНрд╡рдЬ рдЭреВрдареЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕рдордп-рд╕рдордп рдкрд░ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдореЗрдореЛрд░реА рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕реЗ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╢рд╛рдпрдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдпрд╣рд╛рдБ рдЙрдарддрд╛ рд╣реИ: "рдпрджрд┐ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдЕрдкреНрд░рд╛рдкреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ - рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ?"

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

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрддрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдореЛрд░реА рдХреЗ рдХреБрдЫ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдЬреНрдЮрд╛рди рд╣реИред

рдХреЛрдгреАрдп рд╕реНрдореГрддрд┐ рд▓реАрдХ


рдЬреНрдпрд╛рджрд╛рддрд░, рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╕рдордп рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдШрдЯрдХ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдкреБрди: рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - рдорд╛рд░реНрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдпрд╛ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк *ngIfред рдХрд╣реЛ, рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдХреБрдЫ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреГрд╖реНрда рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдкреВрд░реЗ рджрд┐рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рдШрдЯрдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред рдпреЗ рдШрдЯрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ AppComponentрдФрд░ SubComponentред

@Component({
  selector: 'app-root',
  template: `<app-sub *ngIf="hide"></app-sub>`
})
export class AppComponent {
  hide = false;

  constructor() {
    setInterval(() => this.hide = !this.hide, 50);
  }
}

рдШрдЯрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдШрдЯрдХ AppComponentрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ app-subред рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдШрдЯрдХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ setIntervalрдЬреЛ hideрд╣рд░ 50 рдПрдордПрд╕ рдореЗрдВ рдзреНрд╡рдЬ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ ред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рддреНрдпреЗрдХ 50 рдПрдордПрд╕ рдореЗрдВ рдПрдХ рдШрдЯрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ app-subред рдпрд╣реА рд╣реИ, рд╡рд░реНрдЧ рдХреЗ рдирдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ SubComponentред рдпрд╣ рдХреЛрдб рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рджрд┐рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

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

тЦН рдкрд░рд┐рджреГрд╢реНрдп # 1: рд▓реВрдк рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд╛рд▓


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

@Component({
  selector:'app-sub',
  // ...
})
export class SubComponent {
  arr = [];

  constructor() {
    for (let i = 0; i < 100000; ++i) {
      this.arr.push(Math.random());
    }
  }
}

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдореЗрдореЛрд░реА рд▓реАрдХ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд 15 рдПрдордмреА рдХреЗ рдорд╛рди рддрдХ рд╕реАрдорд┐рдд рд╕реАрдорд╛ рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИред рдирддреАрдЬрддрди, рдХреЛрдИ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдирд╣реАрдВ рд╣реИред рдиреАрдЪреЗ рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИред

тЦН рдкрд░рд┐рджреГрд╢реНрдп 2: рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рджрд╕реНрдпрддрд╛ рд╕рдмреНрдЬреЗрдХреНрдЯ


рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рд╣рдо BehaviorSubjectрд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдорд╛рди рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реИ? рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдШрдЯрдХ рд╣рд░ 50 рдПрдордПрд╕ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

@Component({
    selector:'app-sub',
    // ...
})
export class SubComponent {
  subject = new BehaviorSubject(42);
  
  constructor() {
    this.subject.subscribe(value => {
        const foo = value;
    });
  }
}

рдпрд╣рд╛рдВ, рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣, рдореЗрдореЛрд░реА рд▓реАрдХ рдирд╣реАрдВ рд╣реИред

тЦН рдкрд░рд┐рджреГрд╢реНрдп 3: рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╡рд░реНрдЧ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛


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

@Component({
    selector:'app-sub',
    // ...
})
export class SubComponent {
  subject = new BehaviorSubject(42);
  randomValue = 0;
  
  constructor() {
    this.subject.subscribe(value => {
        this.randomValue = value;
    });
  }
}

рдпрджрд┐ рдЖрдк рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреЛрдИ рд░рд┐рд╕рд╛рд╡ рдирд╣реАрдВ рд╣реИ - рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИрдВред

рдкрд░рд┐рджреГрд╢реНрдп # 1 рдореЗрдВ рдХреЛрдИ рд╕рджрд╕реНрдпрддрд╛ рдирд╣реАрдВ рд╣реИред рдкрд░рд┐рджреГрд╢реНрдп рдирдВрдмрд░ 2 рдФрд░ 3 рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдиреЗ рдШрдЯрдХ рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдХреА рдЧрдИ рджреЗрдЦреА рдЧрдИ рд╡рд╕реНрддреБ рдХреА рдзрд╛рд░рд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдШрдЯрдХ рдкреНрд░рд╡рд╛рд╣ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдХрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВред

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

рдкрд░рд┐рджреГрд╢реНрдп рдЬреЛ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рд╣рдо рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╣рдо рд╕реЗрд╡рд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдзрд╛рд░рд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВрдЧреЗ DummyServiceред рдпрд╣рд╛рдВ рд╕рд░реНрд╡рд┐рд╕ рдХреЛрдб рд╣реИред

@Injectable({
  providedIn: 'root'
})
export class DummyService {

   some$ = new BehaviorSubject<number>(42);
}

рд╣рдорд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реЗрд╡рд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ some$рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреНрд░реАрдо ( ) рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ ред

тЦН рдкрд░рд┐рджреГрд╢реНрдп 4: рдПрдХ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдирд╛ рдФрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рдирд╛


рд╣рдо рдпрд╣рд╛рдВ рд╡рд╣реА рд╕реНрдХреАрдо рджреЛрдмрд╛рд░рд╛ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдкрд╣рд▓реЗ рдмрддрд╛рдИ рдЧрдИ рдереАрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░, рд╣рдо рдШрдЯрдХ рдХреЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдирд╣реАрдВ, some$рд╕реЗ рд╕реНрдЯреНрд░реАрдо рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ DummyServiceред

рдХреНрдпрд╛ рдХреЛрдИ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╣реИ? рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреЗ рд╕рдордп, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ AppComponentрдХрдИ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред

@Component({
    selector:'app-sub',
    // ...
})
export class SubComponent {
  
  constructor(private dummyService: DummyService) {
    this.dummyService.some$.subscribe(value => {
        const foo = value;
    });
  }
}

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

тЦН рдкрд░рд┐рджреГрд╢реНрдп 5: рдПрдХ рд╕реЗрд╡рд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдирд╛ рдФрд░ рдПрдХ рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░рдирд╛


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

@Component({
    selector:'app-sub',
    // ...
})
export class SubComponent {
  randomValue = 0;
  
  constructor(private dummyService: DummyService) {
    this.dummyService.some$.subscribe(value => {
        this.randomValue = value;
    });
  }
}

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

тЦН рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдХрдм рд╣реБрдЖ?


рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдкрд╣рд▓реЗ рддреАрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╣рдо рдореЗрдореЛрд░реА рд▓реАрдХ рдирд╣реАрдВ рдХрд░ рдкрд╛рдП рдереЗред рдЗрди рддреАрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ: рд╕рднреА рд▓рд┐рдВрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд╣реИрдВред

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


рдХреЛрдИ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡

рдЬрдм рдХреЛрдИ рдШрдЯрдХ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЬрдм рдХреЛрдгреАрдп рдЕрдм рдЙрд╕рдХреЗ рдкрд╛рд╕ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдШрдЯрдХ рдХреЛ рд░реВрдЯ рдиреЛрдб рд╕реЗ рдирд╣реАрдВ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЕрд╡рд▓реЛрдХрди рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдФрд░ рдЙрд╕рдХреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рд╕реВрдЪреА рд░реВрдЯ рдиреЛрдб рд╕реЗ рднреА рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреА рд╣реИред рдирддреАрдЬрддрди, рдкреВрд░реЗ рдШрдЯрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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


рдореЗрдореЛрд░реА рд▓реАрдХ

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

рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░реВрдВрдЧрд╛: рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЬреИрд╕реЗ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ рд╡реИрд╕рд╛ рдирд╣реАрдВред

рдЙрдЪрд┐рдд рд╕рджрд╕реНрдпрддрд╛ рдХрд╛рд░реНрдп


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

рдмрдбрд╝реА рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЛ рд╕рд▓рд╛рд╣ рджреЗрдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдСрдкрд░реЗрдЯрд░ destroy$рджреНрд╡рд╛рд░рд╛ new Subject<void>()рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдЗрдХрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ takeUntilред

@Component({
  selector:'app-sub',
  // ...
})
export class SubComponent implements OnDestroy {

  private destroy$: Subject<void> = new Subject<void>();
  randomNumber = 0;

  constructor(private dummyService: DummyService) {
      dummyService.some$.pipe(
          takeUntil(this.destroy$)
      ).subscribe(value => this.randomNumber = value);
  }

  ngOnDestroy(): void {
      this.destroy$.next();
      this.destroy$.complete();
  }
}

рдпрд╣рд╛рдВ рд╣рдо рдШрдЯрдХ рдХреЗ рд╡рд┐рдирд╛рд╢ рдХреЗ рдмрд╛рдж destroy$рдФрд░ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рджрд╕реНрдпрддрд╛ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддреЗ takeUntilрд╣реИрдВред

рд╣рдордиреЗ рдШрдЯрдХ рдореЗрдВ рдПрдХ рдЬреАрд╡рдирдЪрдХреНрд░ рд╣реБрдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ ngOnDestroyред рд╣рд░ рдмрд╛рд░ рдПрдХ рдШрдЯрдХ рдХреЗ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдиреЗ рдкрд░, рд╣рдо destroy$рддрд░реАрдХреЛрдВ рдХреЛ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ nextрдФрд░ completeред

рдХреЙрд▓ completeрдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдХреЙрд▓ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддреА рд╣реИ destroy$ред

рдлрд┐рд░ рд╣рдо рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ takeUntilрдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реА рд╕реНрдЯреНрд░реАрдо рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ destroy$ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХ рдХреЗ рдирд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рдордВрдЬреВрд░реА рджреЗ рджреА рдЧрдИ рд╣реИ (рдЕрд░реНрдерд╛рдд, рд╣рдордиреЗ рд╕рджрд╕реНрдпрддрд╛ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреА рд╣реИ)ред

рд╕реНрдкрд╖реНрдЯ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдпрд╛рдж рд░рдЦреЗрдВ?


рдШрдЯрдХ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ destroy$рдФрд░ рдХреЙрд▓ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ next, рдФрд░ completeрд╣реБрдХ рдЬреАрд╡рдирдЪрдХреНрд░ рдореЗрдВ ngOnDestroyред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдореИрдВрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЯреАрдореЛрдВ рдХреЛ рдпрд╣ рд╕рд┐рдЦрд╛рдпрд╛, рдореИрдВ рдЕрдХреНрд╕рд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдпрд╛ред

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

npm install @angular-extensions/lint-rules --save-dev

рддреЛ рдпрд╣ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП tslint.json:

{
  "extends": [
    "tslint:recommended",
    "@angular-extensions/lint-rules"
  ]
}

рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдирд┐рдпрдореЛрдВ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рд╕реНрд░реЛрдд рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрдИ рдШрдВрдЯреЛрдВ рдХреА рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ред

рд╕рд╛рд░рд╛рдВрд╢


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

рдореЗрдореЛрд░реА рд▓реАрдХ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдлрд╛рдИ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдмрд╣реБрдд рд╕рдЯреАрдХрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рднреВрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдРрд╕реЗ рдирд┐рдпрдо рд▓рд╛рдЧреВ рдХрд░реЗрдВ @angular-extensions/lint-rulesрдЬреЛ рдЖрдкрдХреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдХрд╛рд░реНрдп рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдВред

рдпрд╣рд╛рдБ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рднрдВрдбрд╛рд░ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ?


All Articles