Async: Async рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди рд╕рд░рдгреА рд╕рдВрд╢реЛрдзрдиреЛрдВ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдЬреБрд▓ре░ 2014  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: caolan/async

рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рдЙрджрд╛ред async.each , рдФрд░ рдЙрд╕ рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди, рдЬрд┐рд╕ рд╕рд░рдгреА рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рд╕рдВрд╢реЛрдзрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрднреА рднреА рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдХреЙрд▓рдмреИрдХ рдХреЛ рджреЛ рдмрд╛рд░ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред

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

async = require "async" 
arr = [1, 2, 3]  
async.each arr, ((i, cb) -> console.log "i"; setImmediate(cb)), (err) -> console.log "done" 
arr.push(4)

рдпрд╣ рдЙрджрд╛рд╣рд░рдг 3 рдореВрд▓ рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░рддрд╛ рд╣реИ, рдФрд░ i рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдХреЙрд▓рдмреИрдХ рдХреЛ рдХрднреА рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ async.each рдпрд╣ рдХрд░ рд░рд╣рд╛ рд╣реИ:

if (completed >= arr.length) {
  callback(null);
}

рдПрд╕рд┐рдВрдХ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╕рдордп, рдпрд╣ arr.length рдЦрд┐рд▓рд╛рдл рддреБрд▓рдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ ... рдХреНрдпрд╛ рдореВрд▓ рд╕рд░рдгреА рд▓рдВрдмрд╛рдИ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рдкреВрд░реНрдг рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ ?

рдмреЗрд▓рд╛:
http://jsfiddle.net/4ysKX/1/

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

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

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

рдЗрдирдкреБрдЯ рдХреЛ рдХреНрд▓реЛрди рдХрд┐рдП рдмрд┐рдирд╛ _any_ рд╕рд░рдгреА рд╕рдВрд╢реЛрдзрди рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрдЯрд░реЗрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрд╢реЛрдзрди, рд▓реЗрдХрд┐рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд _asynchronous_ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд╛ рдХреНрд▓реЛрди рдХреЗ рдмрд┐рдирд╛ рднреА рд╕реАрдзреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ arr.length рдирд╣реАрдВ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрдЪрд╛рд╣рд┐рдП

(рдореИрдВ @bradens рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛

рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдВрддрддрдГ рдЗрд╕реЗ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @caolan рдкрд░

рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рд╕рд░рдгреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрд░рд┐ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝реА рд╕рд░рдгреА рд╣реИ, рдпрд╛ async.each et al рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

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

рдпрд╣ #557 рдХрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИред

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

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

mjafarpour picture mjafarpour  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cobya picture cobya  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jairoGilC picture jairoGilC  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JustinBeaudry picture JustinBeaudry  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

PsyTae picture PsyTae  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ