
рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЕрдкрдиреЗ рд╕рднреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рдПрдХ рдХрд╛рдлреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп, рдЗрд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкреИрдЯрд░реНрди рдХреЛ рдЖрдорддреМрд░ рдкрд░
рдЭрд░рдирд╛ (рдЭрд░рдирд╛) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЛрдб.рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреБрдЫ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ -
async ред
рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рддрд░реАрдХреЗ рдХреА рдЦрд╛рддрд┐рд░ рдкреВрд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛, рдмрд▓реНрдХрд┐ рд╕реМрдВрджрд░реНрдп рдХреЗ рдХрд╛рд░рдгред Async рдореЗрдВ, рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╣рдо рд╣рд░ рдЬрдЧрд╣ jQuery.Deferred рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА "рд╕реБрдВрджрд░рддрд╛ рдХреА рднрд╛рд╡рдирд╛" рдиреЗ рдореБрдЭреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реИрд▓реА рдХреЛ "рддреЛрдбрд╝рдиреЗ" рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА :)
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВрдиреЗ jQuery.when рдХреЗ рд╕рдорд╛рди рдПрдХ рдЫреЛрдЯреА рд╕реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦреА
JQuery.when рдХреЗ рд╡рд┐рдкрд░реАрдд, рджрд▓реАрд▓реЗрдВ jqxhr рдХреЛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрдиреНрд╣реЗрдВ рд▓реМрдЯрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдЭрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рдЦреЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЭрд░рдирд╛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
1. рдЪрд▓реЛ рдмрджрд▓реЗ рдореЗрдВ 3 рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ:
$.waterfall( function() { return $.ajax(...) }, function(arg1) { return $.ajax(...) }, function(arg2) { return $.ajax(...) } ) .fail(function(error) { console.log('fail'); console.log(error); }) .done(function() { console.log('success'); console.log(arguments); })
2. рдЪрд▓реЛ рдПрдХ рдЕрдиреБрд░реЛрдз рдкрд░ рдЕрдорд▓ рдХрд░реЗрдВ, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╡рд╣ рд╡рд╛рдкрд╕ рд▓реМрдЯ рдЖрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ:
$.waterfall( function() { return $.ajax(...) }, function(arg1) { return arg1 && arg1.answer == 42 ? $.ajax(...) : false; }, function(arg2) { return $.ajax(...) } ) .fail(function(error) { console.log('fail'); console.log(error) }) .done(function() { console.log('success'); console.log(arguments) })
3. рдЭрд░рдирд╛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЭреВрдард╛ рддреБрд░рдВрдд рдЬрд▓рдкреНрд░рдкрд╛рдд рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛, рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрд╕ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛:
var dfrd = $.Deferred(); $.waterfall( function() { return $.ajax(...) }, $.ajax(...),
рд╡рд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рд╣реИред рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рд╕рд▓рд╛рд╣ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдЧрд┐рдердм рдХреЛрдб