Async: рдиреЗрд╕реНрдЯреЗрдб async рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЕрдзрд┐рдХрддрдо рдХреЙрд▓ рд╕реНрдЯреИрдХ рдЖрдХрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдЕрдЧре░ 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: caolan/async

рдЖрдк рдПрд╕рд┐рдВрдХ рдХрд╛ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

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.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')
);

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

+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')
);
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

bradens picture bradens  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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