Bacon.js рдкрд░ FRP (рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ)

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

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

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

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

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

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

рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ
рдФрд░ рдЕрдм рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдХреЗ рд▓рд┐рдПред рдЖрдорддреМрд░ рдкрд░, рд╣рдо рдХреЗрд╡рд▓ рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реБрдирддреЗ рд╣реИрдВ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред

$(document).on("keydown", function(e){ //     }); 

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

 if(e.keyCode >= 37 && e.keyCode <= 40){ //  ,    } 


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

Bacon.js рдХреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ? Bacon.js рдореЗрдВ, рдзрд╛рд░рд╛рдПрдБ (EventStream) рдФрд░ рдЧреБрдг (рд╕рдВрдкрддреНрддрд┐) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдкрд░ рдзрд╛рд░рд╛рдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ред рдзрд╛рд░рд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рдВрдпреБрдХреНрдд, рд╕рдВрдпреБрдХреНрддред рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рджреГрд╢реНрдп рдЖрд░реЗрдЦ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдзрд╛рд░рд╛ рдФрд░ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдХреНрд░рдо рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдПрдХрд▓ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЕрд░реНрдерд╛рддреН рдПрдХ рдШрдЯрдирд╛ рд╕реНрдЯреНрд░реАрдо рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЖрдк рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

 var keyDowns = $(document).asEventStream("keydown"); //  keydown  $(document) var arrowDowns = keyDowns.filter(isArrows); // , ,    isArrows function isArrows(e){ // asEventStream     jQuery.Event return e.keyCode >= 37 && e.keyCode <= 40 } 

рдпрд╛ рдирдХреНрд╢реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:

 var changeDirection = $(document).asEventStream("keydown") .filter(isArrows) // filter  true,    ,    .map(selectDirection) //map   selectDirection(event) .onValue(function(x){ //   ,    //     }); function selectDirection(e){ return { x : e.keyCode % 2 ? e.keyCode - 38 : 0, y : !(e.keyCode % 2) ? e.keyCode - 39 : 0 } } 

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

 var playerMove = $(document).asEventStream("keydown") // keydown  $(document) .filter(isArrows) //     .map(player) //  .map(nextCell); //,   . // , ,        var playerNextEmpty = playerMove.filter(isEmpty).onValue(function(nov){ //  . }); // , ,       -   var goalMove = playerMove.map(isGoal).filter(function(x){return x}); // , ,     ,     -  var goalNextEmpty = goalMove.map(nextCell).filter(isEmpty).onValue(function(x){ //   }); 

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

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


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

 // , ,   ,    -  var playerNextMine = playerMove.filter(isMine); // , ,   ,     -  var goalNextMine = goalMove.map(nextCell).filter(isMine); //   playerNextMine  goalNextMine. var mineAlert = goalNextMine.merge(playerNextMine).onValue(function(x){ //  }); 


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

рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖




рдХреНрдпрд╛ рдпрд╣ рд╕рдм рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ?
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕реЗ, рд╣рдо рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╡рдХреНрд░ рд╣реИ рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдкрд░ bacon.js (рдФрд░ рдЖрдорддреМрд░ рдкрд░ FRP) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╕реБрдВрджрд░рд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдЗрдЯ рдкрд░ рдпрд╛ рдХреЗрд╡рд▓ рд╕рд╛рдЗрди рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП bacon.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рднрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддреБрд░рдВрдд рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред Bacon.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреБрджреНрдзрд┐рдорд╛рди рд╣реИ рдЬрд╣рд╛рдВ рдШреЛрд╖рдгрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╕рд┐рд╕реНрдЯрдо рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рднрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдмреЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рдпреЗ рддрддреНрд╡ рдПрдХ-рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдЕрд░реНрде рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдЖрдХрд╛рд░ рдпрд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдХреБрд▓ рдЬрдЯрд┐рд▓рддрд╛ рд╕реЗ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╣реИред

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

рд╕рд╛рдордЧреНрд░реА :
рдЧрд┐рдЯрд╣рдм : рдмреЗрдХрди.рдЬреЗрдПрд╕ , рд╡реЗрдм-рд╕рд╛рдЗрдЯ
рдХреБрдЫ рдЕрдЪреНрдЫреЗ рдПрдлрдЖрд░рдкреА рд╕рд╛рдорд╛рди: рдПрдХ , рджреЛ , рддреАрди ред

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


All Articles