рдЖрдк рдПрд╕рд┐рдВрдХ рдХрд╛ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
2.0.1
рд╕рдорд╕реНрдпрд╛ рдХрд┐рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реБрдИ (рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг/рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрд╕реНрдХрд░рдг)
рдиреЛрдб 6.2.1
рдПрдирдкреАрдПрдо 3.9.3
рдХреНрдпрд╛ рдХрд┐рдпрд╛ рддреБрдордиреЗ?
let counter = 2000;
async.eachSeries(
new Array(counter),
(item, cb) => {
async.parallel([
(pCb) => {
console.log(counter--);
pCb();
},
], cb);
},
() => console.log('done')
);
рдЖрдкрдиреЗ рдХреНрдпрд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХреА рдереА?
рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реЛрдЧреА, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд┐рдЫрд▓реЗ рджреЛ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ '1' рдФрд░ 'рдХрд┐рдпрд╛' рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рдерд╛?
1000 рд╕реЗ рдХрдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА:
рд░реЗрдВрдЬ рддреНрд░реБрдЯрд┐: рдЕрдзрд┐рдХрддрдо рдХреЙрд▓ рд╕реНрдЯреИрдХ рдЖрдХрд╛рд░ рдкрд╛рд░ рд╣реЛ рдЧрдпрд╛
рдЬрдм рдореИрдВ рд╡рд╛рдкрд╕ async 1.5.2 рдкрд░ рд╡рд╛рдкрд╕ рдЖрдпрд╛, рддреЛ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдиреЗ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд┐рдпрд╛ред
+1
+1
рдПрд╕рд┐рдВрдХреНрд╕ 1.5.2 рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓рдмреИрдХ рд╣рдореЗрд╢рд╛ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 2 рдореЗрдВ рд╣рдордиреЗ рдЗрд╕ рдЧрд╛рд░реНрдб рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ (рджреЗрдЦреЗрдВ https://github.com/caolan/async/blob/master/intro.md#synchronous-iteration-functions)
рддреЛ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдпрд╛ рддреЛ async.ensureAsync(cb)
рдпрд╛ async.setImmediate(cb)
рд░рд┐рдХрд░реНрд╕рди рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
var counter = 2000;
async.eachSeries(
new Array(counter),
(item, cb) => {
async.parallel([
(pCb) => {
console.log(counter--);
async.setImmediate(pCb);
},
], cb);
},
() => console.log('done')
);
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдПрд╕рд┐рдВрдХреНрд╕ 1.5.2 рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓рдмреИрдХ рд╣рдореЗрд╢рд╛ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 2 рдореЗрдВ рд╣рдордиреЗ рдЗрд╕ рдЧрд╛рд░реНрдб рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ (рджреЗрдЦреЗрдВ https://github.com/caolan/async/blob/master/intro.md#synchronous-iteration-functions)
рддреЛ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдпрд╛ рддреЛ
async.ensureAsync(cb)
рдпрд╛async.setImmediate(cb)
рд░рд┐рдХрд░реНрд╕рди рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: