Async: async.series рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдкрд┐рдЫрд▓реЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдирд╡ре░ 2015  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: caolan/async

рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ async.series рдХрд╛рд░реНрдп рдХреЛ рдХрдИ рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред async.waterfall рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реЗ рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред async,auto рдмрд╣реБрдд рд╡рд░реНрдмреЛрдЬрд╝ рд╣реИ, рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЕрдирд╛рд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рдгрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди (рдпрд╛ async.series рдХрд╛ рд╕реБрдзрд╛рд░) рдХрд╛рдо рдЖрдПрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдВрдЧреЗ

рд╕рдВрднрд╛рд╡рд┐рдд рдирд╛рдо: рд╕рдВрдЪрдп, рд╢реНрд░реГрдВрдЦрд▓рд╛рд╕рдВрдЪрдп

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

async.accumulate({
    one: function(callback){
        setTimeout(function(){
            callback(null, 1);
        }, 200);
    },
    two: function(callback, results){
        // results: {one: 1}
        setTimeout(function(){
            callback(null, 2);
        }, 100);
    },
    three: function(callback, results){
         // results: {one: 1, two: 2}
        setTimeout(function(){
            callback(null, results.one + results.two);
        }, 100);
    }
},
function(err, results) {
    // results is now equal to: {one: 1, two: 2, three: 3}
});

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

рдХреНрдпрд╛ рдЖрдкрдиреЗ async.auto рдЪреЗрдХ рдЖрдЙрдЯ рдХрд┐рдпрд╛ рд╣реИ? рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХреБрдЫ рдХреЗ рд╕рдорд╛рди рд╣реА рдХреБрдЫ рдХрд░рддрд╛ рд╣реИред

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

async.auto({
    one: function(callback){
        setTimeout(function(){
            callback(null, 1);
        }, 200);
    },
    two: ["one", function(callback, results){
        setTimeout(function(){
            callback(null, 2);
        }, 100);
    }],
    three: ["two", function(callback, results){
        setTimeout(function(){
            callback(null, results.one + results.two);
        }, 100);
    }
   ]
},
function(err, results) {
    // results is now equal to: {one: 1, two: 2, three: 3}
});

рд╣рдо рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдСрдЯреЛ рдореЗрдВ рдХреБрдЫ рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ - рд╣рдореЗрд╢рд╛ рдХреЙрд▓рдмреИрдХ рдЕрдВрддрд┐рдо рд╣реИ, рдФрд░ autoInject (#608) рднреА рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдореЛрдВ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдХреНрд░рдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ - рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ JS рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдирд╣реАрдВ рд╣реИ (рдФрд░ рдХреЗрд╡рд▓ рдЫреЛрдЯреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдиреЛрдб рдореЗрдВ рдЧрд╛рд░рдВрдЯреА рд╣реИ)ред рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ async.waterfall ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ auto рдФрд░ waterfall рдмреАрдЪ рдореЗрдВ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рд╣рдо autoInject рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред

рдЖрдк рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛:

function seriesAccumulate(tasks, done) {
  async.reduce(tasks, [], function (results, task, next) {
    task(results, function (err, result) {
      results.push(result);
      next(err, result);
    });
  }, done);
}

рдореИрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдЗрд╕рдХреЛ рдмрдВрдж рдХрд░рдирд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рд╢реИрд▓реА рдореЗрдВ series рдФрд░ waterfall рдмреАрдЪ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

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

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

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

рдореИрдВ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдзрдХреНрдХрд╛ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ? рдореБрдЭреЗ Async.js (рд╕рдорд╛рдирд╛рдВрддрд░ рдпрд╛ рджреМрдбрд╝ рдореЛрдб) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
alfredoborrero picture alfredoborrero  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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