$ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдкрд╕рдВрджреАрджрд╛

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛ рдХрд┐ jQuery рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╕рдВрд╕реНрдХрд░рдг 1.5 рд╕реЗ рдЖрд╕реНрдердЧрд┐рдд, "рд╕реНрдердЧрд┐рдд" (jQuery.Deferred), рд╕рд╛рде рд╣реА рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред ред

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

рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ


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

var result = readValueBy(key); console.info(result); 

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

рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрджрд╛рд╣рд░рдг


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

 $.post("ajax/test.html", function( data ) { $( ".result" ).html( data ); }); 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ $.post() рд╡рд┐рдзрд┐ ( рджреЗрдЦреЗрдВ ) рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ jQuery рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ - рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 $.ajax({ type: "POST", url: "ajax/test.html", data: data, success: function( data ) { $( ".result" ).html( data ); }, dataType: dataType }); 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдлрд▓рддрд╛ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА success рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди, jQuery 1.5 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, ajax рддрд░реАрдХреЗ ($ .get, $ .post, $ .ajax) рдЙрдиреНрд╣реЗрдВ рд╣реИрдВрдбрд▓рд░ рдкрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдБ рди рдХреЗрд╡рд▓ рдПрдХ XMLHTTPRequest рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддреА рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ, рдкреНрд░реЙрдорд┐рд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реИ ред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (= рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз) рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ, рд╣рдо рд╕рдлрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рддреНрд░реБрдЯрд┐ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрджрд┐, рдФрд░ рдЬрдм рд╣рдо рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдЦреБрдж рдХреЛ рдПрдХ рддрдХ рд╕реАрдорд┐рдд рди рдХрд░реЗрдВред ред рд╣рдо рдПрдХ рдЪрд░ рдореЗрдВ рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 function api(key, data) { return $.post('ajax/' + key, data); } // .. var requestData = { id: '79001' }, storeDataRequest = api('get_store_by_id', requestData); //    

... рдФрд░ рдмрд╛рдж рдореЗрдВ рд╣рдореЗрдВ рдЙрди рд╕рднреА рдХреЙрд▓рдмреИрдХ рдХреЛ "рд╣реИрдВрдЧ" рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

 function addStandardHandlers(request, requestData, model) { request.done(function(data){ //   ,        //        model.received(requestData, data && data.payload); }).fail(function(){ //      //   ,        model.received(requestData, null); }); } function addUIHandlers(request, $messageHolder) { //   .. request.done(function(data){ // ..   "", $messageHolder.text('Success'); }).fail(function(){ //    - // ",  " $messageHolder.text('Error, please retry.'); }).always(function(){ //   ,   ,   , //        window.setTimeout(function(){ $messageHolder.fadeOut(); }, 3000); }); } //  ,    addStandardHandlers(storeDataRequest, requestData, context.getModel()); //  ,   UI addUIHandlers(storeDataRequest, $('.main_page-message_holder')); 

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

рдЕрдиреНрдп рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ


рдЖрдЗрдП рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд▓реЗрдВ рдФрд░ рдЙрди рдЕрдиреНрдп рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ рдЬрд┐рдирд╕реЗ рд╣рдореЗрдВ рдирд┐рдкрдЯрдирд╛ рд╣реИ:



Deferred рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ?


рдЖрдЗрдП рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдЬрдм рд╣рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рд╕рд░рд▓ рдЕрдЬрд╛рдХреНрд╕ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рджреЗрдЦрд╛ рдерд╛):

  1. рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрддрд┐ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЙрд▓рдмреИрдХ рдХреИрд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ?
  2. рдЗрд╕рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдЕрдкреЗрдХреНрд╖рд┐рдд рдШрдЯрдирд╛ рдХреА рдкрд╣рдЪрд╛рди рдХреИрд╕реЗ рдХрд░реЗрдВ?
  3. рдХреИрд╕реЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛ рд░рд╣рд╛ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдХреЙрд▓рдмреИрдХ рд╣реИрдВрдбрд▓рд░ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП?


рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рд╕рдордп рдкрд╣рд▓реЗ рд╣рдордиреЗ рдХрдИ рдСрдирд▓реЛрдб рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдмрд┐рдВрджреБ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдерд╛:

 window.onload = (function(oldHandler){ return function(){ if (oldHandler) oldHandler(); // new code here.. }; })(window.onload); 

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдзреНрд╡рдЬ рдЪрд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдвреЗрд░ рджреНрд╡рд╛рд░рд╛ рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕ рдкрд░ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рд╢рд░реАрд░ рдмрдВрдж рдерд╛ред рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛рдж рд╣реИ рдХрд┐ рд╣рдордиреЗ рдХреИрд╕реЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рд╡рд┐рдЬреЗрдЯ рдХреЛ рдХреИрд╕реЗ рдмрддрд╛рдпрд╛ рдЬрд╛рдП рдХрд┐ рдбреЛрдо рддреИрдпрд╛рд░ рдкрд╣рд▓реЗ рд╣реА рд▓реЛрдб рд╣реЛ рдЪреБрдХрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ $(function(){ ... }) , рдЬрд┐рд╕реЗ рдЕрдм jQuery рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рдХреЙрд▓рдмреИрдХ рддрдм рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рдбреЛрдо рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧ рдкреИрдЯрд░реНрди рд╕рд░рд▓ рд╣реИред рд╣реИрдВрдбрд▓рд░ рдХреЛ "рд╣реИрдВрдЧ рдЕрдк" рдХрд░реЗрдВред рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рд▓реЗ рд╣реА рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рд╣реИрдВрдбрд▓рд░ рддреБрд░рдВрдд рдЪрд▓рддрд╛ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХреЗ рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рд╣реИрдВрдбрд▓рд░ (рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рднреА рд╣реИрдВрдбрд▓рд░) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдЗрдП рддреАрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдердЧрд┐рдд рджреЗрдЦреЗрдВред рдЖрд╕реНрдердЧрд┐рдд рдХреЗ рд╕рд╛рде, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рдЕрд╕рдлрд▓ - (рдЧрд▓рдд рдпрд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд) рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдореВрд╣ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдЫреЛрд░ ("рдкреНрд░реЗрдо") рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рд╕рдореВрд╣ рднреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдСрдкрд░реЗрд╢рди рдХреА рдкреНрд░рдЧрддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ $ .Deferred () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХреА рдЧрдИ рддреАрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХреАред

Deferred рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ


рдЖрдЗрдП рдЙрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдЬрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЖрд╕реНрдердЧрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣рдо рддрдм Deferred рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВрдЧреЗред

  1. рдЬрдм рд╣рдореЗрдВ рдХрд┐рд╕реА рд░рд╛рдЬреНрдп рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ / рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рдд рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдкрд╣рд▓реА рд╢рд░реНрдд рд╣реИред
  2. рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрдм рд╣рдо рдПрдХ рд▓рдВрдмреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд┐рддрд┐ рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди / рдкреВрд░реНрдгрддрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред рдЖрд╕реНрдердЧрд┐рдд рдЖрдкрдХреЛ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреА рд╡рд┐рдзрд┐ рдФрд░ рдмрд╛рдж рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рд╕реЗ рдбреЗрдЯрд╛ / рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ "рдЕрдирдЯрд╛рдЗрдЯреА" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


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

рджреВрд╕рд░рд╛ рдЖрдзрд╛рд░ред рдЖрдЗрдП рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

 $.post("ajax/cart", function( data1 ) { //  1. //   data1 // if (data1 && data.success) .... //  2. //      var processedData1 = data1.payload; //  3. //      : $.post("ajax/shipping", processedData1, function( data2 ) { //  1. //  2. var processedData2 = data2.payload; //  3. $.post("ajax/payment", data2, function( data3 ) { //  1. //  2. var processedData3 = data3.payload; //  3.    $( ".result" ).html( processedData3 ); }); }); }); 

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

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

рдкрд╣рд▓реЗ, рдореИрдВ рд╡рд┐рдзрд┐ рдХреЗ рддрд░реНрдХ рдХреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдореБрдЭреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ:

 function purchaseStep01_CartDataRequestFor(input) { return $.post("ajax/cart", input); } function purchaseStep02_UpdateShippingInfoRequestFor(input) { return $.post("ajax/shipping", input); } function purchaseStep03_SubmitPaymentDetailsRequestFor(input) { return $.post("ajax/payment", input); } 

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

 //   : // -  -  -  //   /   function handleResponseData(request, specificLogic) { //    -promise,    fail //   ,  AJAX  ,   //        success==true // (          ) //      ,      return $.Deferred(function(def){ request .fail(def.reject) .done(function(data){ if (!data || !data.success) return def.reject(); if (!specificLogic) return def.resolve(data); try { def.resolve(specificLogic(data)); } catch (e) { def.reject(e); } }); }).promise(); } 

... рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХред рд╣рдо рдЙрдкрд░реЛрдХреНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рддрд░реНрдХ рдХреЛ рд╕рдВрдЧрдд рдХрд░реЗрдВрдЧреЗ:

 //  1.   .  . var step01_CartDataPromise = handleResponseData( purchaseStep01_CartDataRequestFor(data), function (data){ //       . //    -  ,    fail. if (!data.cart) throw new Error('Cart info is missing'); //  -  ,     cartInfo  . return data.cart; }), // <- , ..         . //  2.       1. //       : // step02_ShipInfoPromise = step01_CartDataPromise.then().done(function(cartInfo){... // then()   ,      // .      jQuery step02_ShipInfoPromise = step01_CartDataPromise.then(function(cartInfo){ return handleResponseData( purchaseStep02_UpdateShippingInfoRequestFor({ id: cartInfo.id}), function (data){ if (!data.shipping) throw new Error('Shipping info is missing'); return { cart: cartInfo, shipping: data.shipping }; }); }), //  3.     2. step03_PaymentResultPromise = step02_ShipInfoPromise.then(function(prePurchaseInfo){ return handleResponseData( purchaseStep03_SubmitPaymentDetailsRequestFor(prePurchaseInfo), function (data){ if (!data.payment) throw new Error('Payment gone wrong'); return data.payment; }); }); // <-    //          ,  //       //     done()  then()  function(paymentInfo)..  //    function(prePurchaseInfo)..   . // .    2. step03_PaymentResultPromise.then(function(paymentInfo){ $('.result').html( paymentInfo.message ); }); 


рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЗ рд╡рд┐рдкрдХреНрд╖:



рдкреЗрд╢реЗрд╡рд░реЛрдВ:



рдХреБрдЫ рддрд░реНрдХ рджреЗрдВрдЧреЗ рдХрд┐ рдлрд╛рдпрджреЗ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЧреБрдгрд╡рддреНрддрд╛ рджреЛрдиреЛрдВ рдХреЛ рдкрдЫрд╛рдбрд╝рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд░рд┐рд╕рд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рд╣реИред рдФрд░ рдЖрдЧреЗ рдЪрд▓рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реВрдВред

рд╡рд╛рджрд╛


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

 var def = $.Deferred(); //   , //  "" def.resolve()  def.reject() // //  readonly- promise, //   def //  ""  var promise = def.promise() 

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

 $.Deferred(function(def){ //       , //  resolve()  reject() //    . }); 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЛ рддреБрд░рдВрдд "рднреВрд▓" (рдмрд┐рдирд╛ рднреВрд▓ рдХреЗ) рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ .promise() рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдгред рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдлрд▓ рд╕рдорд╛рдкрди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред

 function doneTimeout(timeout) { return $.Deferred(function(def){ window.setTimeout(def.resolve, timeout); }).promise(); } 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рд╡рд╛рджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдгред

рдЙрджрд╛рд╣рд░рдг


рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдкреНрд░рддрд┐рдлрд▓рд┐рдд / рд╡рд╛рджрд╛ рдХрд░рдиреЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдорд░реНрде рдерд╛ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рд▓реАред

рдЪрд┐рддреНрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ


рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рди рдХреЗрд╡рд▓ рдпрд╣ рдкрд╣рдЪрд╛рдирдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рдЪрд┐рддреНрд░ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рднреА:

 var loadImage = createCache(function(defer, url) { var image = new Image(); function cleanUp() { image.onload = image.onerror = null; } defer.then( cleanUp, cleanUp ); image.onload = function() { defer.resolve( url, { width: image.width, height: image.height }); }; image.onerror = defer.reject; image.src = url; }); 


рддреИрдпрд╛рд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреА рдШрдЯрдирд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг


рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ $(function(){.. }) рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╢реБрджреНрдз рд░реВрдк рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рддрддреНрдкрд░рддрд╛ рдХрд╛ рд╡рд╛рджрд╛ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:

 var domReadyPromise = $.ready.promise(); 


рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реНрдерд┐рддрд┐ рдХреА рд╢реБрд░реБрдЖрдд


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

 function failTimeout(timeout) { return $.Deferred(function(def){ window.setTimeout(def.reject, timeout); }).promise(); } 

рд╣рдо рдЙрд╕ рдмрдЯрди рдХреЗ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рджрдмрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ 10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдпрд╣ рдЦреБрдж рд╣реА рдкреНрд░реЗрд╕ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ? рдпрд╣ рдХреМрди рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ?

 var timeToSubmit = $.Deferred(function(def){ doneTimeout(10000).done(def.resolve); $('.submissionButton').one('click', function(){ def.resolve(); return false; }); }).promise(); timeToSubmit.done(function(){ //       //    }); 


рдкреГрд╖реНрда рддрддреНрд╡реЛрдВ рдкрд░ рдПрдиреАрдореЗрд╢рди рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ


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

 function animationPromise($element){ return $.Deferred(function(def){ $element.fadeIn( 10000 , def.resolve ); }).promise(); } 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ jQuery рддрддреНрд╡ рдПрдХ рд╡рд╛рджрд╛ () рдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдПрдиреАрдореЗрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИ:

 function animationPromise($element){ return $element.fadeIn( 10000 ).promise(); } 

рдЖрдк рдЗрд╕ рддрд░рд╣ рдПрдиреАрдореЗрд╢рди рдХреЗ рдЕрдВрдд рддрдХ "рд╕реБрди" рд╕рдХрддреЗ рд╣реИрдВ:

 animationPromise($('#foo')).done(function(){ console.log('Animation is finished'); }); 

рдпрд╛ рдмрд╕:

 $element.fadeIn( 10000 ).promise().done(function(){ console.log('Animation is finished'); }); 

рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЛ рджреВрд╕рд░реЗ рдкрд░ рдПрдХ рдПрдиреАрдореЗрд╢рди "рд╕реНрдЯреНрд░рд┐рдВрдЧ" рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд┐рдпрдорд┐рдд рддрд░реАрдХреЗ рд╣реИрдВ:

 $element.fadeIn( 10000 ).fadeOut( 10000 ); 


рдореЛрдбрд▓ рд╕рдВрд╡рд╛рдж рдХрд╛ рд░рдЦрд░рдЦрд╛рд╡


рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ рдкреГрд╖реНрда рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдмрд╛рддрдЪреАрдд рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред

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

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

рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрдореНрдореАрджреЛрдВ рдХрд╛ рдореЗрд▓


рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдКрдкрд░, рд╣рдордиреЗ рджреЛ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд╛рдирд╛: рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рдпрд╛ рдПрдХ рдмрдЯрди рджрдмрд╛рдХрд░ред рдРрд╕реА рд╣реА рдХрдИ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдХрдИ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ рдмрди рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЙрд╕рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдЖрдо рддреМрд░ рдкрд░, jQuery рд╣рдореЗрдВ рдПрдХ рдРрд╕рд╛ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рджреЛрдВ рдХреЛ$.when() рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ , рдФрд░ рдПрдХ рдирдпрд╛ рд╡рд╛рджрд╛ рджреЗрддрд╛ рд╣реИ , рдЬрд┐рд╕рдХреА рд╕рдлрд▓рддрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рджреЗ рдХреЗ рдкреВрд░реНрдг рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИ рдЬреЛ рдЗрд╕реЗ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рд╡рд┐рдлрд▓рддрд╛ рдХреЛ рдХрдо рд╕реЗ рдХрдо рд╡рд┐рдлрд▓ рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд▓реЙрдЬрд┐рдХрд▓ рдСрдкрд░реЗрд╢рди рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдХреЗрд╡рд▓ TRUE (= рд╕рдлрд▓рддрд╛) рд╣реИ, рдЬрдм рд╕рднреА рдСрдкрд░реЗрд╢рдиреНрд╕ TRUE рднреА рд╣реЛрддреЗ рд╣реИрдВ, рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ - FALSE (= рд╡рд┐рдлрд▓рддрд╛)ред

рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рддрд╛рд░реНрдХрд┐рдХ рдпрд╛ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рдпрд╛рдиреАрдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╡рд┐рдзрд┐, рд╡рд╛рджреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди, рдЬреЛ рдСрдкрд░реЗрд╢рди рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИ рдпрджрд┐ рдФрд░ рдХреЗрд╡рд▓ рдЕрдЧрд░ рд╣рд░ рдХреЛрдИ рдЕрдкрдиреЗ рд╡рд╛рджреЗ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╡рд┐рдлрд▓рддрд╛ рднреА рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдФрд░ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдСрдкрд░реЗрд╢рди рд╕рдлрд▓рддрд╛ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрдХреЗрдЪ рдпрд╣рд╛рдВ рджреВрдВрдЧрд╛:

 // fail if and only if all fail: function failIifAllFail(_promise_array){ var promises = [].slice.apply(arguments), count = promises.length; return $.Deferred(function(def){ //      var done = 0, fail = 0; //             //   check() ,       //     $.each(promises, function wrap(key, p){ p.done(function(){ done++; check(); }).fail(function(){ fail++; check(); }); }); function check(){ if ((done + fail) < count) return; if (fail === count) def.resolve(); else def.reject(); } }).promise(); } 


рд▓рдВрдмреА рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг


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

рдореИрдВ рдкрд╛рдардХ рдХреЛ рдЕрдкрдиреЗ рджрдо рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдПрдХ рдЕрд▓рдЧ рдиреЛрдЯ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рд╕рдВрдмрдВрдзрд┐рдд рдХрдбрд╝рд┐рдпрд╛рдБ


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


All Articles