рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░рдорд┐рдХ рдХреЙрд▓ рдореЗрдВ рд╕реНрдкреЗрдЧреЗрдЯреАред рд╕рд┐рджреНрдзрд╛рдВрдд рдФрд░ рдЕрднреНрдпрд╛рд╕

рд▓реЗрдЦ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЖрд╣реНрд╡рд╛рди ред

рднрд╛рдЧ 1. рд╕рд┐рджреНрдзрд╛рдВрдд


рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЧреИрд░-рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рд╕рдордХрд╛рд▓рд┐рдХ (рдЕрд╡рд░реБрджреНрдз) рд╣реИрдВред
рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рджреА рдЧрдИ рднрд╛рд╖рд╛ рд╕рдордХрд╛рд▓рд┐рдХ рдпрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреАрдВрдж рд╕рдорд╛рд░реЛрд╣ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ / рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ (рдЗрд╕реЗ рд╡рд┐рд▓рдВрдм, рдард╣рд░рд╛рд╡ рдЖрджрд┐ рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдЬрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

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

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

рдмрд╣реБрдЖрдпрд╛рдореА рд▓рд╛рдн:

рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдиреБрдХрд╕рд╛рди:

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:
setTimeout(function () { console.log('Async'); }, 0); 

рдпрд╛

 button.addEventListener('click', function () { console.log('Async click'); }, false) 


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

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

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

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

рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреНрдпрд╛ рд╣реИ?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ, рдХреЛрдИ рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдРрд╕реЗ "рдмрдЧ" рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдЧрд╛ (рд╕реНрдЯреИрдХрдСрдирдлреНрд▓реЛ рдкрд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ):
рд╕рд░реНрд╡рд░ рдХреЛрдб

 <?php #booklist.php header('Content-type: application/json'); echo json_encode(array(1, 2, 88)); ?> 


рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб

 var getBookList = function () { var boolListReturn; $.ajax({ url : 'bookList.php', dataType : 'json', success : function (data) { boolListReturn = data; } }); return boolListReturn; }; console.log(getBookListSorted()); // -   :) 


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

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╕рдлрд▓рддрд╛ рдХреЙрд▓рдмреИрдХ рдХреЗ рдЕрдВрджрд░ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рдХреЙрд▓ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред
 var getBookList = function (callback) { $.ajax({ url : 'bookList.php', dataType : 'json', success : function (data) { callback(data); } }); }; getBookList(function (bookList) { console.log(bookList); }); 


рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рддрд░реАрдХрд╛ рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрдерд╛рдХрдерд┐рдд рдЕрд╡рдзрд╛рд░рдгрд╛ "рд╡рд╛рджрд╛" (рд╡рд╛рджрд╛, рдЬрд┐рд╕реЗ рдбрд┐рдлрд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) - рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд╕реНрддреБ рдЬреЛ рдЕрдкрдиреА рдХреЙрд▓рдмреИрдХ рдХрддрд╛рд░, рд╡рд░реНрддрдорд╛рди рд░рд╛рдЬреНрдп рдХреЗ рдЭрдВрдбреЗ рдФрд░ рдЕрдиреНрдп рдЕрдЪреНрдЫрд╛рдЗрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред
 var getBookList = function () { return $.ajax({ url : 'bookList.php', dataType : 'json', }).promise(); }; //     promise    done getBookList().done(function (bookList) { console.log(bookList); }); 


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

рд╕рд░реНрд╡рд░ рднрд╛рдЧ:
 <?php #book.php $id = $_REQUEST['id']; $response = array( "id" => $id ); switch ($id) { case '1': $response['title'] = "Bobcat 1"; break; case '2': $response['title'] = "Lion 2"; break; case '88': $response['title'] = "Tiger 88"; break; } header('Content-type: application/json'); echo json_encode($response); ?> 


рд╣рдорд╛рд░рд╛ рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:

 var getBookList = function () { return $.ajax({ url : 'bookList.php', dataType : 'json', }).promise(); }; var getBook = function (id) { return $.ajax({ url : 'book.php?id='+id, }).promise(); }; getBookList().done(function (bookList) { $.each(bookList, function (index, bookId) { getBook(bookId).done(function (book) { console.log(book.title); }); }); }); 


рдпрд╣ рддреАрди-рдХрд╣рд╛рдиреА рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдШреЛрдВрд╕рд▓реЗ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕реНрддрд░ рдмрд╛рдзрд╛ рдбрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдРрд╕реА рдЬрдЧрд╣ рдмрди рдЬрд╛рддреА рд╣реИ рдЬрд╣рд╛рдВ рдХреАрдбрд╝реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдПрдХ рдмрдЧ рд╣реИ: рдпрджрд┐ рдЖрдИрдбреА рд╕реВрдЪреА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЫрдВрдЯрдиреА рдЦреЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреБрдЫ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдзрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЧрддрд┐ "рдЫреЛрдбрд╝реЗрдВ" рд╣реЛ рд╕рдХрддреА рд╣реИред
Php рдкрд░, рд╣рдо рд╕реНрд▓реАрдк рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ:
...
рдорд╛рдорд▓рд╛ '2':
рдиреАрдВрдж (2);
$ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ ['рд╢реАрд░реНрд╖рдХ'] = "рд╢реЗрд░ реи";
рддреЛрдбрд╝;
...
рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧреА
Bobcat 1
рдмрд╛рдШ 88
рд╢реЗрд░ реи
рдореБрд╕реАрдмрдд рдпрд╣рд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реА рд╕реВрдЪреА рдЕрдм рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдирд╣реАрдВ рд╣реИ! ...
рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рд▓реЗрддреЗ рд╣реБрдП рд╣рдо рд╕реВрдЪреА рдХреЛ рдХреИрд╕реЗ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ?
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЗрддрдиреА рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд╛рджрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдПрдВ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреА, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЖрдк рдЕрдкрдиреА рддреНрд╡рдЪрд╛ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд╛рдЯрдХ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВрдЧреЗред

рднрд╛рдЧ 2. рдЕрднреНрдпрд╛рд╕


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЗрд╕ рдЕрдзреВрд░реА рд╕реВрдЪреА рдкрд░ рдПрдХ рдирдЬрд╝рд░:
async.js, async, async-mini, atbar, start, chainsaw, рдЪреИрдирд▓, Cinch, cloudd, deferred, рдкреНрд░рддреНрдпреЗрдХ, EventProxy.js, рдлрд╝рд╛рдЗрдмрд░рд╛рдЗрдЬрд╝, рдлрд╝рд╛рдЗрдмрд░, рд╡рд╛рджрд╛, asyncblock, рдкрд╣рд▓рд╛, flow-js, funk, futures, futures рд╡рд╛рджрд╛, рд╕рдореВрд╣реАрдХрд░рдг, рдкреНрд░рдЬреНрд╡рд▓рд┐рдд, рдЬрд╛рдо, Jscex, JobManager, jsdeferred, LAEH2, miniqueue, $ N, nestableflow, node.flow, рдиреЛрдб- fnqueue, рдиреЛрдб-рдЪреЗрди, рдиреЛрдб-рдирд┐рд░рдВрддрд░рддрд╛, рдиреЛрдб-рдХреНрд░реЙрди, рдиреЛрдб-рдХреЙрдиреНрдЯреИрдм, рдиреЛрдб-рдЗрдирдлрд╝реНрд▓реЛ , node_memo, рдиреЛрдб-рд╕рдорд╛рдирд╛рдВрддрд░, рдиреЛрдб-рд╡рд╛рджрд╛, рд╕рдВрдХреАрд░реНрдг, рдиреНрдпреВрд░реЙрди, noflo, рдкреНрд░реЗрдХреНрд╖рдХ, рдкреВрд▓, q, рд░реАрдб-рдлрд╛рдЗрд▓реНрд╕, рд░реВрдмрд░рдбреИрдХ, рд╕реНрдХреИрди, seq, рд╕реЗрдХреНрд╕реА, рд╕рд┐рдЧреНрдирд▓, рд╕рд░рд▓-рдЕрдиреБрд╕реВрдЪреА, рд╕реНрд▓рд╛рдЗрдб, soda.js, рдЪрд░рдг, stepc , streamline.js, рд╕рд┐рдВрдХ, QBox, zo.js, рд░реБрдХрдиреЗ рдпреЛрдЧреНрдп, рдЭрд░рдирд╛
рдпреЗ рд╕рднреА рдмрд╛рдЗрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреА рд╣реИрдВ, "рд╕рд┐рдВрдХ рдХреЛрдб рдореЗрдВ async рдХреЛрдб рд▓рд┐рдЦреЗрдВред" рдпрд╛рдиреА рдЖрдкрдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рджреЗрдирд╛ рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд▓рд┐рдЦрдирд╛ред
рдореИрдВрдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдорд╛рдирдХ jQuery.Deferred рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ рдореИрдВ рдмрдбрд╝реА рдЙрдкрдпреБрдХреНрддрддрд╛ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ред
рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдЖрдЗрдП рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реИрдВ:

рд╡рд┐рдХрд▓реНрдк 1 "рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓"

рдиреЗрд╕реНрдЯреЗрдб рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди (рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реВрдЪреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ, рдЬрдмрдХрд┐ рдореВрд▓ рд╕реВрдЪреА рдХреЗ рдХреНрд░рдо рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП) рд╕рднреА рдХреЙрд▓ рдХреЛ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╡рдХреВрдл рд╣реЛрдЧрд╛:
 var getBookList = function () { var strReturn; $.ajax({ url : '../bookList.php', dataType : 'json', success : function (html) { strReturn = html; }, async : false }); return strReturn; }; var getBook = function (id) { var strReturn; $.ajax({ url : '../book.php?id='+id, success : function (html) { strReturn = html; }, async : false }); return strReturn; }; var getBookTitles = function () { return $.map(getBookList(), function (val, i) { return getBook(val).title; }); }; var ul = $('<ul/>').appendTo($('body')); $.each(getBookTitles(), function (index, title) { $('<li>'+ title +'</li>').appendTo(ul); }); 

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

рдЧреМрд░рд╡
  1. рд╕рд░рд▓ рдХреЛрдб, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ
  2. рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди

рдиреБрдХрд╕рд╛рди:
  1. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рддрд╛ рд╣реИ
  2. рдкрд░рд┐рдгрд╛рдореА рд╕рдордп рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рдордп рдХрд╛ рдпреЛрдЧ рд╣реИ


рд╡рд┐рдХрд▓реНрдк 2 "рдПрдХ рд╡рд╛рджрд╛ рдЬреЛ рдЕрдкрдиреА рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рд╡рд╛рджреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ"

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

 var getBookTitles = function () { var listOfDeferreds = []; var listDeferred = $.Deferred(); getBookList().done(function (bookList) { $.each(bookList, function (i, val) { listOfDeferreds.push(getBook(val)); }); $.when.apply(null, listOfDeferreds).then(function () { listDeferred.resolve($.map(arguments, function (triple) { return triple[0].title; })); }); }); return listDeferred.promise(); }; getBookTitles().done(function (bookTitles) { $.each(bookTitles, function (index, title) { $('<li>'+ title +'</li>').appendTo('#ul'); }); }); 


GetBookTield рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдмрд╣реБрдд рднрд╛рд░реА рд╣реИред рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЧрд▓рдд рд╣реИ, рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд╛рдн:
  1. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
  2. рдкрд░рд┐рдгрд╛рдореА рд╕рдордп рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рд▓рдВрдмрд╛ рд╣реИред

рдиреБрдХрд╕рд╛рди:
  1. рдЬрдЯрд┐рд▓, рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдХреЛрдб
  2. рдХрдард┐рди рдкрд░рд┐рдХреНрд╖рдг


рд╡рд┐рдХрд▓реНрдк 3 "ui рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЧрд╣ рдХрд╛ рдЖрд░рдХреНрд╖рдг"

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдИрдбреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рддрддреНрд╡реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддреЗ рд╣реИрдВ, рддреБрд░рдВрдд рдПрдХ рдпреВрдЖрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЙрд╕реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ, рд╣рдо рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ UI рддрддреНрд╡ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рднрд░ рджреЗрддреЗ рд╣реИрдВ:
 getBookList().done(function (bookList) { $.each(bookList, function (index, id) { var li = $('<li>Loading...</li>'); li.appendTo('#ul'); getBook(id).done(function (book) { li.html(book.title); }); }); }); 


рдЧреМрд░рд╡
  1. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
  2. рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрд░реЛрдз рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдкрд░рд┐рдгрд╛рдо рддреБрд░рдВрдд рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдЕрдиреБрд░реЛрдз рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ

рдиреБрдХрд╕рд╛рди:
  1. рдордзреНрдпрдо рдкрдардиреАрдпрддрд╛ рдХреЛрдб
  2. рдХрдард┐рди рдкрд░рд┐рдХреНрд╖рдг


рд╡рд┐рдХрд▓реНрдк 4 "рдПрдХ рдЕрд▓рдЧ рд╡реЗрдмрд╡рд░реНрдХ рдереНрд░реЗрдб рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓"

рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╡рд┐рджреЗрд╢реА рд╡рд┐рдХрд▓реНрдк рдЖрдпрд╛ - рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рд╡реЗрдмрд╡реЙрдХрд░ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рд╕рд░рд▓ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЗрд╕рдореЗрдВ рдиреЛрдб рд╕реЗ рдПрдХ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдЧрд╛ред
 // wwarpc.js var require = function () { // Only load the module if it is not already cached. var cache = {}; var gettext = function (url) { var xhr = new XMLHttpRequest(); xhr.open("GET", url, false); // sync xhr.send(null); if (xhr.status && xhr.status != 200) throw xhr.statusText; return xhr.responseText; }; return function (url) { if (!cache.hasOwnProperty(url)) { try { // Load the text of the module var modtext = gettext(url); // Wrap it in a function var f = new Function("require", "exports", "module", modtext); // Prepare function arguments var context = {}; // Invoke on empty obj var exports = cache[url] = {}; // API goes here var module = { id: url, uri: url }; // For Modules 1.1 f.call(context, require, exports, module); // Execute the module } catch (x) { throw Error("ERROR in require: Can't load module " + url + ": " + x); } } return cache[url]; } }(); onmessage = function(e){ if ( e.data.message !== "start" ) { return } var url = e.data.url; var funcname = e.data.funcname; var args = e.data.args; var module = require(url); postMessage(module[funcname].apply(null, args)); }; 


рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рд╣реЛрдЧрд╛:
рдпрд╣ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдФрд░ рдореЙрдбреНрдпреВрд▓ рджреЛрдиреЛрдВ рдХреЛ рдХреИрд╢ рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рд╣рд░ рдХреЙрд▓ рдкрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

 //   ,     ,  <script src="http://ie-web-worker.googlecode.com/svn/trunk/worker.js"></script> /** * Web Worker Asynchroneous Remote Procedure Call */ var wwarpc = function () { var worker; var getWorker = function () { // for lazy load if (worker === undefined) { worker = new Worker("wwarpc.js"); } return worker; }; return function (url, funcname) { var args = Array.prototype.slice.call(arguments, 2); var d = $.Deferred(); var worker = getWorker(); worker.onmessage = function (e) { d.resolve(e.data); }; worker.postMessage({ message : "start", url : url, funcname : funcname, args : args }); return d.promise(); }; }(); 

рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдореЙрдбреНрдпреВрд▓ рдиреЛрдб-рдЬреЗрдПрд╕-рдЬреИрд╕реЗ рд╣реЛрдВрдЧреЗред
 //modules/Books.js exports.getBookList = function () { var the_object = {}; var http_request = new XMLHttpRequest(); http_request.open( "GET", 'bookList.php', false ); http_request.send(null); if ( http_request.readyState == 4 && http_request.status == 200 ) { the_object = JSON.parse( http_request.responseText ); } return the_object; }; exports.getBook = function (id) { var the_object = {}; var http_request = new XMLHttpRequest(); http_request.open( "GET", 'book.php?id='+id, false ); http_request.send(null); if ( http_request.readyState == 4 && http_request.status == 200 ) { the_object = JSON.parse( http_request.responseText ); } return the_object; }; exports.getBookTitles = function () { var Books = exports; return Array.prototype.map.call(Books.getBookList(), function (val, i) { return Books.getBook(val).title; }); }; 

рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдорд╛рди рдХреЛрдб рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ (рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди) рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕рд▓реА (рдЙрддреНрдкрд╛рджрди рдореЗрдВ) рджреЛрдиреЛрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЦреНрдп рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛрдЧрд╛, рддреАрди рдХреЗ рдмрдЬрд╛рдп рджреЛ-рдХрд╣рд╛рдиреА:
 wwarpc('modules/Books.js', 'getBookTitles').done(function (bookTitles) { $.each(bookTitles, function (index, title) { $('<li>'+ title +'</li>').appendTo('#ul'); }); }); 

рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдРрд╕реА рд╣реЛрдЧреА рдХрд┐ рд╕рднреА рдСрдкрд░реЗрд╢рди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдореЗрдВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдШреЛрдВрд╕рд▓реЗ рдХрд╛ рд╢рд┐рдХрд╛рд░ рд╣рдореЗрд╢рд╛ рдиреНрдпреВрдирддрдо рд╣реЛрдЧрд╛ред

рд▓рд╛рдн:
  1. рдирдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
  2. рд╕рд░рд▓, рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдХреЛрдб
  3. рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди (рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЛрдб рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)

рдиреБрдХрд╕рд╛рди:
  1. IE рдФрд░ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
  2. рдкрд░рд┐рдгрд╛рдореА рд╕рдордп рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рдордп рдХрд╛ рдпреЛрдЧ рд╣реИ


рдирд┐рд╖реНрдХрд░реНрд╖:


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

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


All Articles