рднрд╛рдЧ 1:
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧрднрд╛рдЧ 2:
рдШрдЯрдирд╛рдПрдБ рдпрд╛ рдЖрдк рдЕрдкрдиреА рдЦреБрдж рдХреА рдмрд╛рдЗрдХ рдХреЛ рдордЬрдмреВрдд рдХреНрдпреЛрдВ рдХрд░реЗрдВрджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЙрд╕реНрдХреЛ рдЧрд░реНрдореА рдиреЗ рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп рдореЗрд░реА рд╕рд╛рд╡рдзрд╛рдиреА рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдЕрдкреНрд░рд┐рдп рдЧрд▓рддреА рд╣реБрдИ - рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд╡рд░реНрдЧ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЧрд▓рдд рдЯрд╛рдЗрдкрд┐рдВрдЧ, рдЬрд┐рд╕реЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдмрдЧ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕реЗ рд╕рд╣реА рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреЗ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рд╕рдореБрджрд╛рдп рдореЗрдВ рд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рддреЛ, рдореЗрд░рд╛ WinAmp рдУрдЬрд╝реА рдСрд╕реНрдмреЙрд░реНрди рд╣рд┐рдЯреНрд╕ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдирд┐рднрд╛рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдмрд┐рд▓реНрд▓реА рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред
рддреНрд░реБрдЯрд┐
рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, "рдЯрд╛рдЗрдкрд┐рдВрдЧ рдИрд╡реЗрдВрдЯ рдкреИрд░рд╛рдореАрдЯрд░" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдирд┐рдореНрди рдХреЛрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдпрд╣рд╛рдВ
рдХреЛрдбрдкреНрд▓реЗрдХреНрд╕ рд╕реЗ рдкреВрд░реНрдг рдХреЛрдб рд╣реИ):
export class Event<Callback extends Function, Options> { private Callbacks: Callback[] = []; 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); } } this.Callbacks.push(callback); return res; } public Remove(callback: Callback): void { var filteredList: Callback[] = []; for (var i = 0; i < this.Callbacks.length; i++) {
рддреНрд░реБрдЯрд┐ рдпрд╣ рдереА рдХрд┐
Event
рд╡рд░реНрдЧ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ:
Event<Callback extends Function, Options>
рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХреЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмреАрдЪ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐
Callback
рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рдХреБрдЫ рдордирдорд╛рдирд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдХреБрдЫ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдШрдЯрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдХреЙрд▓рдмреИрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдиреА рдкреИрд░рд╛рдореАрдЯрд░ рдЖрдкрд╕ рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реБрдП рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рд╕рд╣рдордд рд╣реБрдП рдмрд┐рдирд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрд░ рдХреЛ рд╢реВрдЯ рдХрд░рдирд╛ рдкреНрд░рд╛рдердорд┐рдХ рд╣реИ, рдЬреЛ рдПрдХ рдЕрдиреБрднрд╡рд╣реАрди рдбреЗрд╡рд▓рдкрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдФрд░ рдлрд┐рд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рд╕реНрдЯреНрд░реАрдЯ рдореИрдЬрд┐рдХред
рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ
рд░реВрд╕реА рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐:
рдкреНрд░рддрд┐рдирд┐рдзрд┐ - рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдЬреЛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ (рд╕реНрдерд┐рд░ рдпрд╛ рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИред рдбреЗрд▓рд┐рдЧреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЗрд╡реЗрдВрдЯ рдореЙрдбрд▓ рдореЗрдВред
рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░-рд╕реБрд░рдХреНрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдПрдХ рдлрд╝рдВрдХреНрд╢рди (рдЕрдиреБрд╡рд╛рдж рдФрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореБрдХреНрдд) рдХреЗ рд▓рд┐рдП рдХрдбрд╝рд╛рдИ рд╕реЗ рд▓рд┐рдЦрд╛ рд╕рдВрджрд░реНрднред
рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдорддрд▓рдм рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЬреЗрдПрд╕ рджреБрдирд┐рдпрд╛ рдХреЗ рдХрд░реАрдм, рдпрд╣ рдПрдХ рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪрд░ рд╣реИ рдЬреЛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкрджреНрдзрддрд┐ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЬреЗрдПрд╕ рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рднреАред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрд╢рд╛рд░реЛрдВ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдЯреАрдПрд╕ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреЙрд▓рдмреИрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ:
function Boo(callback: (strings: string[]) => string) { }
рдпрд╣рд╛рдВ рд╣рдо рдХреЙрд▓рдмреИрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рд▓реЗрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд░рд┐рдХреЙрд░реНрдб рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдШрдЯрдирд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдорд╣рд╛рди рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, TS 0.9 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдФрд░ рд╕рд░реНрд╡рд╢рдХреНрддрд┐рдорд╛рди Google рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдореЗрд░реА рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХреЗред рдЦреЛрдЬ рдХреЗ рджреВрд╕рд░реЗ рдШрдВрдЯреЗ рдореЗрдВ рдЯреАрдПрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдХреЛрдбрдкреНрд▓реЗрдХреНрд╕ рдкрд░ рдЬрд╡рд╛рдм рдорд┐рд▓рд╛:
export interface IDelegateTest { (options: any); } var test: IDelegateTest = function (options: any) { }
рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде, рд╣рдо рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ IDelegateTest рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХреА рдорд╛рддреНрд░рд╛ рдФрд░ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИ:
рдЗрд╕ рддрд░рд╣ рдПрдХ:
рдФрд░ рдпрд╣ рднреА рдПрдХ:
рдпрд╛ рдпрд╣ рдПрдХ:
"рдмрдВрдж рдХрд░реЛ!" рдЪреМрдХрд╕ рдкрд╛рдардХ рдХрд╣реЗрдЧрд╛ред рд╣рдо рд╡реЛ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрддреНрддрд░:
options
рдХреЛ
any
рд░реВрдк
options
рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рдм рдХреБрдЫ рдХреНрд╖рдорд╛ рдХрд░рддрд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВрдиреЗ рд▓рдЧрднрдЧ 10 рдорд┐рдирдЯ рдмрд┐рддрд╛рдП рдЬрдм рддрдХ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг "рддреАрди рдкрд╛рдЗрдВрд╕ рдореЗрдВ" рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рдФрд░ рдЗрд╕ рдЬрд╛рд▓ рдореЗрдВ рдирд╣реАрдВ рдкрдбрд╝реЗрдЧрд╛ред
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ:
export interface IDelegateTest {
рджреВрд╕рд░реЗ, рд╣рдо рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рд░реАрдореЗрдХ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрд╕реЗ рд╕рд╣реА рдирд╛рдо рджреЗрдВрдЧреЗред рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рдмрд╕ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдм рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ:
export interface ICallback<ArgType> { (arg: ArgType, context?: any); }
options
рдкреИрд░рд╛рдореАрдЯрд░ рд╣рдорд╛рд░рд╛ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдФрд░
context
рд╣рдореЗрдВ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдШрдЯрдирд╛ рдХреЛ рдХрд┐рд╕реА рддреАрд╕рд░реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдореЙрдирд┐рдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрд╕реА рдмреИрдХрдмреЛрди.рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрджрд░реНрдн рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рджреНрд╡рд╛рд░рд╛ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рдирд┐рд╣рд┐рдд рдмрд┐рдВрджреБ рд╣реИред рдпрджрд┐ рдЖрдк C #:
(object sender, EventArgs args)
рдХреА рдкрд░рдВрдкрд░рд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкрд╣рд▓реЗ
context
рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ TS рдХрдВрдкрд╛рдЗрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ: рдПрдХ рдмрдЧ рдпрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдЦ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИред
рдШрдЯрдирд╛ рдХреЛ рд╕рд╣реА рдХрд┐рдпрд╛
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛрдбрд╝реЗрдВ:
export interface ICallbackDesc<ArgType> { Callback: ICallback<ArgType>; Subscriber: any; }
рд╣рдореЗрдВ рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
ICallbackDesc
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА рд╣рдореЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдЗрд╕реЗ рдХреНрдпрд╛ рдореВрд▓реНрдп рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред
рд╣рдорд╛рд░реЗ
Event
рд╡рд░реНрдЧ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ:
export class Event<ArgType> { private Callbacks: ICallbackDesc<ArgType>[] = []; public Subscribe(callback: ICallback<ArgType>, subscriber: any): ITypedSubscription<ArgType> { var that = this; var res: ITypedSubscription<ArgType> = { Callback: callback, Event: that, Unsubscribe: function () { that.Unsubscribe(callback); } } this.Callbacks.push({ Callback: callback, Subscriber: subscriber }); return res; } public Unsubscribe(callback: ICallback<ArgType>): void {
рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ
ICallback.
Trigger :
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
рдХрд┐ рдЕрдм
Callback
(рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рд╛ рд╣реБрдЖ рд╣реИ) рд╣рдореЗрд╢рд╛
ICallback.
Trigger :
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
ICallback.
Trigger :
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .
ICallback.
Trigger
:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { // }
, :
export class MessagesRepo { public MessagesLoaded = new Events.Event<string[]>(); public ErrorHappened = new Events.Event<ErrorHappenedOptions>(); }
:
public Subscribe() { // this.Subscriptions.push(MessagesRepoInstance.MessagesLoaded.Subscribe(function (messages: string[], context?: any) { alert(messages && messages.length > 0 ? messages[0] : 'Nothing'); }, this)); // this.Subscriptions.push(MessagesRepoInstance.ErrorHappened.Subscribe(function (error: ErrorHappenedOptions) { alert(error.Error); }, this)); }
// context subscriber.MessagesRepo.MessagesLoaded.Trigger(['Test message 1'], this); // subscriber.MessagesRepo.ErrorHappened.Trigger({ Error: 'Test error 1' });
Unsubscribe
:
public Unsubscribe(callback: ICallback<ArgType>): void { var filteredList: ICallbackDesc<ArgType>[] = []; for (var i = 0; i < this.Callbacks.length; i++) { if (this.Callbacks[i].Callback !== callback) { filteredList.push(this.Callbacks[i]); } } this.Callbacks = filteredList; }
!==
. . () - , . , , Unsubscribe
. .. .., , , . .
? . , JS , , TS, . - .
.. :
public static Main(): void { var subscriber1: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); var subscriber2: Messages.SomeEventSubscriber = new Messages.SomeEventSubscriber(); subscriber1.Subscribe(); subscriber2.Subscribe(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 1'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 1' }); subscriber1.Destroy(); Messages.MessagesRepoInstance.MessagesLoaded.Trigger(['Test message 2'], this); Messages.MessagesRepoInstance.ErrorHappened.Trigger({ Error: 'Test error 2' }); }
2 'Test message 1' 'Test error 1', 'Test message 2' 'Test error 2'.
apply:
public Trigger: ICallback<ArgType> = function (arg: ArgType, context?: any) { var callbacks: ICallbackDesc<ArgType>[] = this.Callbacks; for (var i = 0; i < callbacks.length; i++) { callbacks[i].Callback.apply(callbacks[i].Subscriber, [arg, context]); } }
. .
Upd. . .