jQuery рдХреЗ рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБ (рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг)

31 рдЬрдирд╡рд░реА рдХреЛ, jQuery 1.5 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рдореБрдЦ рдирд╡рд╛рдЪрд╛рд░ Deferred рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреВрд▓ рдерд╛ред рдпрд╣ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред



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



рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг



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



рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреАрди рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



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



рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЖрд╕реНрдердЧрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ (рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рд░рджреНрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ)ред рдпрджрд┐ "рд░рди" / "рддреНрд░реБрдЯрд┐" рд╣реИрдВрдбрд▓рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рд░рди" / "рд░рджреНрдж" рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рддреБрд░рдВрдд рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред



рдЖрд╕реНрдердЧрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди / рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХреА рдмрд╛рд░-рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдЙрд╕рдХреЗ рд░рд╛рдЬреНрдп рдореЗрдВ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓рдмреИрдХ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╕рдорд╛рдзрд╛рди () рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░) рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред



рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБ "рдЬрдВрдЬреАрд░" рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рддрд░реАрдХреЗ (рд╕рднреА рдирд╣реАрдВ) рд╕реНрд░реЛрдд рд╡рд╕реНрддреБ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╡рд╕реНрддреБ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рдХрд░рдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣: deferred.done (callback1) .fail (callback2);



рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди



deferred.done (рдХрд┐рдП рдЧрдП рдХреЙрд▓рдмреИрдХ)

рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рддрдм рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБ "рдХрд┐рдП рдЧрдП" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рддреА рд╣реИ



deferred.fail (рдЕрд╕рдлрд▓)

рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рддрдм рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╕реНрдердЧрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ "рд░рджреНрдж" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ



deferred.then (рдХрд┐рдП рдЧрдП рдХреЙрд▓рдмреИрдХ, рдЕрд╕рдлрд▓ рдХреЙрд▓рдмреИрдХ)

рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИ, deferred.done (didCallbacks) рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ редfail (рдЕрд╕рдлрд▓ рдХреЙрд▓рдмреИрдХ)



рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рддреАрди рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд░рдгрд┐рдпрд╛рдБ, рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



deferred.resolve (рдЖрд░реНрдЧ)

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



deferred.reject (args)

рд╕реНрдердЧрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ "рд░рджреНрдж" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рд╕рднреА рд╡рд┐рдлрд▓ рдХреЙрд▓рдЕрд░реНрдбреНрд╕ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ рдЖрд░реНрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ



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



deferred.resolve рдЗрд╕рдХреЗ рд╕рд╛рде (рд╕рдВрджрд░реНрдн, args)

deferred.rejectWith (рд╕рдВрджрд░реНрдн, args)

рд╡рд┐рдзрд┐рдпрд╛рдБ рдкреВрд░реА рддрд░рд╣ рд╕реЗ .resolve (args) рдФрд░ .reject (args) рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ, рдХреЗрд╡рд▓ рд╕рдВрджрд░реНрдн рдЗрд╕ рдХреАрд╡рд░реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ



рдЖрдк рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



deferred.isResolved ()

deferred.isRejected ()

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



Deferred.promise () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рдХреНрд╖реЗрдкрдг рдмрдирд╛рдирд╛



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



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



рдПрдХ рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБ рдмрдирд╛рдирд╛



рдЖрд╕реНрдердЧрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ: $ .Deferred () рд╡рд┐рдзрд┐ (рдирдпрд╛ рдХреАрд╡рд░реНрдб рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ рдпрд╛ рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП $ .when (args) рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред



$ред рдкрд╕рдВрджреАрджрд╛ (рджреБрд░реНрдЧрдВрдз)



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



$ .when (deferred1, deferred2, ...)



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



рдпрджрд┐ рдЖрдк рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рддрдм рд╣реА рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рд╕реНрдерд╛рди рд╣реИред

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

$.when($.get( '/echo/html/' ), $.post( '/echo/json/' )).done( function (args1, args2) { alert( " " ); });





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



рдпрджрд┐ рдПрдХ рдЧреИрд░-рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБ рдХреЛ $ .when () рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╣реА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рд╡рд┐рдзрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реЗрд╖ рддрд░реНрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реИред



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



$ .Ajax () рдореЗрдВ рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



JQuery 1.5 рдореЗрдВ, рдЕрдЬрд╛рдХреНрд╕ рдЗрдВрдЬрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм $ .ajax () рд╡рд┐рдзрд┐ рдФрд░ рдЗрд╕рдХреЗ рдЫреЛрдЯреЗ рд╕рдВрд╕реНрдХрд░рдг рднреА рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдХрдИ рд╣реИрдВрдбрд▓рд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдШрдЯрдирд╛рдУрдВ (рд╕рдлрд▓ рдпрд╛ рдЧрд▓рддреА рд╕реЗ) рдХреЛ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрдИ рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред



рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ $ .ajax (), $ .get (), $ .post (), $ .getScript (), $ .getJSON (), рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрд╕реНрдердЧрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рд╣реИ, рдЕрд░реНрдерд╛рддред рдЗрд╕рдореЗрдВ рдРрд╕реЗ рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдФрд░ $ .when () рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред



рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рдорд╛рдирд╛рд░реНрдердХ рд╢рдмреНрдж рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдирд╛рдо рд╕реЗ ajax рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ:



рд░реЛрдЪрдХ рддрдереНрдп



$ .When () рд╡рд┐рдзрд┐, рдЬрдм рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЙрдирдХреЗ рддрд░реНрдХреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреА рд╣реИ, рддреЛ .promise () рд╡рд┐рдзрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддреА рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕реА рдХреЛрдИ рд╡рд┐рдзрд┐ рд╣реИ, рддреЛ "рд╡рд╛рдо" рд╡рд╕реНрддреБ рдХреЛ рднреА рдЕрд╡рд╣реЗрд▓рдирд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдмрдЧ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬрдм рдЗрд╕ рддрд░рд╣ рдХреА "рдмрд╛рдИрдВ" рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдирд┐рд╖реНрдкрд╛рджрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред



JQuery (jquery-git.js) рдХреЗ рдирд╡реАрдирддрдо рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдЖрд╕реНрдердЧрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рднреА .invert () рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ .promise () рд╡рд┐рдзрд┐ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреА рд╣реИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде "рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд": рдХрд┐рдпрд╛ <=> рд╡рд┐рдлрд▓, isResolved <ред => рдЕрд╕реНрд╡реАрдХреГрдд, рд╡рд╛рджрд╛ <=> рдЙрд▓рдЯрд╛ рдХрд░реЗрдВред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрднреА рддрдХ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред



рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг



рдЙрджрд╛рд╣рд░рдг 1. (рдКрдкрд░ рджреЗрдЦреЗрдВ) рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рджрд┐рдЦрд╛рддрд╛ рд╣реИред



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

// 3

function test() {

var d = $.Deferred();

setTimeout( function () { d.resolve(); }, 3000);

return d.promise();

}



var t = test().done( function () { alert( " " ); });



//

setTimeout( function () {

alert( " " );

t.done( function () { alert( "" ); });

}, 5000);




* This source code was highlighted with Source Code Highlighter .






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



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

< div id ="d1" style ="width:100px;height:100px;background:red;" > 1 </ div >

< div id ="d2" style ="width:100px;height:100px;background:green;" > 2 </ div >




* This source code was highlighted with Source Code Highlighter .






//

var a1 = $.Deferred(),

a2 = $.Deferred();



$( '#d1' ).slideUp(2000, a1.resolve);

$( '#d2' ).fadeOut(4000, a2.resolve);



a1.done( function () { alert( 'a1' ); });

a2.done( function () { alert( 'a2' ); });

$.when(a1, a2).done( function () { alert( 'both' ); });




* This source code was highlighted with Source Code Highlighter .






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



рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ jsfiddle.net рд╕реЗрд╡рд╛ рдкрд░ рдЪрд▓рд╛рдпрд╛ рдФрд░ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ



рд╕рд╛рдордЧреНрд░реА:

blog.jquery.com/2011/01/31/jquery-15-released

api.jquery.com/category/deferred-object

www.erichynds.com/jquery/using-deferreds-in-jquery (рдЕрдиреБрд╡рд╛рдж: habrahabr.ru/blogs/jquery/112960 )

JQuery 1.5 рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдкреНрд░рд▓реЗрдЦрди



All Articles