рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиред рдкреВрд░рд╛ рдЧрд╛рдЗрдб

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

рддреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП Rx рдХреНрдпрд╛ рд╣реИ?
Rx рдХрд╛ рдЕрд░реНрде рд╣реИ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕ред рдЬреИрд╕рд╛ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреГрд╖реНрда рдкрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╣рддреА рд╣реИ:
рдЖрд░рдПрдХреНрд╕ рдСрдмреНрдЬрд╝рд░реНрд╡рд░ рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рдШрдЯрдирд╛-рдЙрдиреНрдореБрдЦ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред

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

рдореМрдЬреВрджрд╛ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдВрдХ рдкрд░ RxJS рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ jQuery, MooTools, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк, Dojo, ExtJS рдХреЗ рд╕рд╛рде-рд╕рд╛рде Google рдореИрдкреНрд╕ рдЬреИрд╕реА рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рдиред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ 7.4 kb rx.js рдлрд╝рд╛рдЗрд▓ (30 Kbytes рдЕрд╕рдВрдкреАрдбрд╝рд┐рдд) рд╣реЛрддреА рд╣реИред



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

рддреЛ, рдПрдХ рд╕рд╛рдзрд╛рд░рдг HTML рдкреЗрдЬ рдмрдирд╛рдПрдВ рдФрд░ RxJS рдореЗрдВ рдкреНрд▓рдЧ рдХрд░реЗрдВред

<head> <title>Samplestitle> <script type="text/javascript" src="Scripts\rx.js"></script> <head> 

рдЙрд╕рдХреЗ рдмрд╛рдж, IntelliSense Rx рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред



рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдмрд┐рдЯ

рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ Rx рдореЗрдВ рдЕрдкрдирд╛рдИ рдЧрдИ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдкреНрд░реЗрдХреНрд╖рдХреЛрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд╡рд▓реЛрдХрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 var source = null; var subscription = source.Subscribe( function (next) { console.log("OnNext: " + next); }, function (exn) { console.log("OnError: " + exn); }, function () { console.log("OnCompleted"); }); 

рдФрд░

 var source = Rx.Observable.Empty(); var observer = Rx.Observer.Create( function (data) { $(" ").text(data).appendTo("#content"); }); var handle = source.Subscribe(observer); 

рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:



рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, .NET рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдбрд┐рд╕реНрдкреЛрдЬрд╝ рдкреИрдЯрд░реНрди RxJS рдореЗрдВ рдЖрдпрд╛ред
рддреЛ рдСрдмреНрдЬрд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ (рд╣реИрдВрдбрд▓) рдореЗрдВ рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рд╣реИ, рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



observables

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рд╣рдореЗрд╢рд╛ "рд╣реЙрдЯ" рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ: рдЪрд╛рд╣реЗ рд╡рд╣ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╣реЛ, рдпрд╛ рдбреЛрдо рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ "рдХреЛрд▓реНрдб" рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрддрдиреЗ рдЖрдо рдирд╣реАрдВ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдЙрдирдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдкреВрд░реНрд╡-рддреИрдпрд╛рд░ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред
рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдФрд░ рдЙрдирдХреЗ рд╡рд┐рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдПрдкреАрдЖрдИ рддрд╛рд▓рд┐рдХрд╛ рд╣реИред
рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдорд╡рд┐рд╡рд░рдг
рдЦрд╛рд▓реА ()OnCompleted рдирд╛рдордХ рдПрдХ рдЦрд╛рд▓реА рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
рдлреЗрдВрдХреЛ (error_msg)рдПрдХ OnError рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд╛рд▓реА рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
рд╡рд╛рдкрд╕реА (рдореВрд▓реНрдп)рдПрдХ рдЖрдЗрдЯрдо рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
рд░реЗрдВрдЬ (рд╢реБрд░реВ, рдЧрд┐рдирддреА)32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ
рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ (рдЖрд░рдВрднрд┐рдХ_рд╕реНрдЯреЗрдЯ, рдХрдВрдбреАрд╢рди, рдЪрдпрдирдХрд░реНрддрд╛, рдкреБрдирд░рд╛рд╡реГрддрд┐)рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
GenerateWithTime (рд╕рдордп)рдЬрдирд░реЗрдЯ рд╡рд┐рдзрд┐ рдХреЗ рд╕рдорд╛рди, рд▓реЗрдХрд┐рди рддрддреНрд╡реЛрдВ рдХреА рдкреАрдврд╝реА рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдЬреЛрдбрд╝рддрд╛ рд╣реИ
рдХрднреА рдирд╣реАрдВ ()рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмреБрд▓рд╛рдП рдмрд┐рдирд╛ рдПрдХ рдЦрд╛рд▓реА рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
.Observable (event_name)JQuery рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди
FromArray ()JS рд╕рд░рдгреА рд╕реЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ
рдмрдирд╛рдПрдВ (subscribe_detail)рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рд╕рджрд╕реНрдпрддрд╛ рд╡рд┐рд╡рд░рдг рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рддрд╛ рд╣реИ
FromDognvent (dom_element, event_name)DOM рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди
FromIEEvent (dom_element, event_name)Internet Explorer рдХреЗ DOM рддрддреНрд╡реЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди
FromHtmlEvent (dom_element, event_name)FromDOMEvent () рдФрд░ FromIEEvent () рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд╣реИ

LINQ

рддреЛ, рд╣рдо RxJS - LINQ рд╕рдорд░реНрдерди рдХреА рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдиреЗ .NET рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рдЗрд╕ рдЕрджреНрднреБрдд рддрдХрдиреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИред
LINQ рдХрд╛ рдЕрднрд┐рдкреНрд░рд╛рдп рднрд╛рд╖рд╛ рдПрдХреАрдХреГрдд рдХреНрд╡реЗрд░реА рд╕реЗ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдЧреНрд░рд╣ рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред RxJS рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рддрд░реАрдХреЗ рдирд╣реАрдВ рдЖрдП, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА:

рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рдереЗ, рдХреЗрд╡рд▓ рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рд╣реИрдВ:

рдореИрдВрдиреЗ рдкреВрд░реА рд╕реВрдЪреА рдирд╣реАрдВ рджреА, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдХреА рддрд░реАрдХреЗ рдЖрдк рдЦреБрдж рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╕реНрд╡реАрд░ рдХреА рд╕реНрдкрд╖реНрдЯ рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рдХрд╛ рдЖрд░реЗрдЦ рд╣реИ:



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

 var items = [1, 2, 3, 4, 5]; var observable = Rx.Observable.FromArray(items).Select(function (item) { return { Value: item, Sqrt: Math.sqrt(item) }; }).Where(function (item) { return item.Value + 2 < 5; }); 

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

 var input = $("#textbox").toObservable("keyup") .Select(function (event) { return $(event.target).val(); }) .Timestamp() .Do(function (inp) { var text = "I: " + inp.Timestamp + "-" + inp.Value; $(" ").text(text).appendTo("#content"); }) .RemoveTimestamp() .Throttle(1000) .Timestamp() .Do(function (inp) { var text = "T: " + inp.Timestamp + "-" + inp.Value; $(" ").text(text).appendTo("#content"); }) .RemoveTimestamp() .DistinctUntilChanged(); var subscribtion = input.Subscribe(function (data) { $(" ").text("Your text: " + data).appendTo("#content"); }); 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, DistinctUntilChanged рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд▓реЙрдЧрд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВред

рд╕реНрдкреЗрдЧреЗрдЯреА рдХреЛрдб рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣реЛ!

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

 $.ajax({ url: "your_url", dataType: "json", success: function (data, textStatus, xhr) { $("#results").empty(); $.each(data[1], function (_, result) { $("#results").append(" " + result + " "); }); }, error: function (xhr, textStatus, errorThrown) { $("#error").text(errorThrown); } }); 

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

 function serviceCall(text) { return $.ajaxAsObservable( { url: "your_url", dataType: "json", format: "json", data: text }); } var source = serviceCall("search me"); var handle = source.Subscribe(function (result) { $("#results").append(" " + result + " "); }, function (exn) { $("#error").text(exn); }); 

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

рдЕрдВрддрднрд╛рд╖рдг

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

рдкреБрдирд╢реНрдЪ

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ рдХреА рдПрдХ рд╕реВрдЪреА рдЬреЛ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░рддреА рд╣реИ:

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


All Articles