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

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рдЕрдкреНрд░реИрд▓ 2016  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: caolan/async

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ Node.JS . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ Async.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреБрд╢/рд╕реНрдЯреИрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рд╣реА рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:

var async = require("async");
var array = [];
var x = [1,2,3,4];

// This portion of code works perfect and the arguments are passed perfectly
// The results that i am getting are: [100, 200, 300, 400]
array.push(function(callback){ callback(null,calculate(x[0]))});
array.push(function(callback){ callback(null,calculate(x[1]))});
array.push(function(callback){ callback(null,calculate(x[2]))});
array.push(function(callback){ callback(null,calculate(x[3]))});

// This portion of code does not work and I dont know why ... 
// The results that i am getting are: [400, 400, 400, 400]
// Obviusly the function is receiving the same argument a=4 everytime is called
for (i=0;i<3;i++){
    array.push(function(callback){ callback(null,calculate(x[i]))});
}

async.parallel(array,function(err,result){
    if (err) {
        console.log(err);
        return;
    }
    console.log("Results are: " + result);
});


function calculate(a) {
  return a*100
}

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рдзрдиреНрдпрд╡рд╛рдж

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

рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдореВрд▓ рдЬреЗрдПрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рд╕реНрдХреЛрдкрд┐рдВрдЧ рдХреНрд╡рд┐рд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрддреНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк async.map рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рднреА рдЪрд▓рддрд╛ рд╣реИ:

async.map([1, 2, 3, 4], function(x, callback){
  callback(null,calculate(x))
}, function(err,result){
    if (err) {
        console.log(err);
        return;
    }
    console.log("Results are: " + result);
});

рд▓реЗрдХрд┐рди рдЕрд╕рд▓реА рдЬрд╡рд╛рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ Async рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

var result = [1, 2, 3, 4].map(calculate)

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

рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдореВрд▓ рдЬреЗрдПрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рд╕реНрдХреЛрдкрд┐рдВрдЧ рдХреНрд╡рд┐рд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрддреНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк async.map рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рднреА рдЪрд▓рддрд╛ рд╣реИ:

async.map([1, 2, 3, 4], function(x, callback){
  callback(null,calculate(x))
}, function(err,result){
    if (err) {
        console.log(err);
        return;
    }
    console.log("Results are: " + result);
});

рд▓реЗрдХрд┐рди рдЕрд╕рд▓реА рдЬрд╡рд╛рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ Async рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

var result = [1, 2, 3, 4].map(calculate)

рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж ...

рдореЗрд░реЗ рдЖрдИрдлреЛрди рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛

7 рдЕрдкреНрд░реИрд▓ 2016 рдХреЛ рд╢рд╛рдо 7:42 рдмрдЬреЗ рдПрд▓реЗрдХреНрд╕ рдЕрд░реНрд▓реА рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдореВрд▓ рдЬреЗрдПрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рд╕реНрдХреЛрдкрд┐рдВрдЧ рдХреНрд╡рд┐рд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрддреНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк async.map рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рднреА рдЪрд▓рддрд╛ рд╣реИ:

async.map ([рез, реи, рей, рек], рдлрд╝рдВрдХреНрд╢рди (рдПрдХреНрд╕, рдХреЙрд▓рдмреИрдХ) {
рдХреЙрд▓рдмреИрдХ (рд╢реВрдиреНрдп, рдЧрдгрдирд╛ (рдПрдХреНрд╕))
}, рдлрд╝рдВрдХреНрд╢рди (рддреНрд░реБрдЯрд┐, рдкрд░рд┐рдгрд╛рдо) {
рдЕрдЧрд░ (рдЧрд▓рддреА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдЧрд▓рддреА);
рд╡рд╛рдкрд╕реА;
}
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ("рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ:" + рдкрд░рд┐рдгрд╛рдо);
});
рд▓реЗрдХрд┐рди рдЕрд╕рд▓реА рдЬрд╡рд╛рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ Async рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

рд╡рд░ рдкрд░рд┐рдгрд╛рдо = [рез, реи, рей, рек] рдирдХреНрд╢рд╛ (рдЧрдгрдирд╛)
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рд╕реВрддреНрд░ рдХреЛ рд▓рд┐рдЦрд╛ рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ

рд╣рд╛рдп рдХрд╛рдУрд▓рди,
рдорджрдж рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ "рд░реЗрд╕" рдореЛрдб рдХреЛ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрдИ рдмрд╛рд░ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВред
рдореИрдВ рдмрд╕ рдЕрдкрдиреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЬреЛ рднреА рдкрд╣рд▓реЗ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рдЙрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
Async.race рдХреЛ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рд╕рд╛рджрд░,
рдЕрд▓реНрдлреНрд░реЗрдбреЛ рдмреЛрд░реЗрд░реЛ
рджрд┐рдирд╛рдВрдХ: рдЧреБрд░реБ, 7 рдЕрдкреНрд░реИрд▓ 2016 18:42:25 -0700
рд╕реЗ: рд╕реВрдЪрдирд╛рдПрдВ@github.com
рдкреНрд░рддрд┐: [email protected]
рд╕реАрд╕реА: [email protected]
рд╡рд┐рд╖рдп: рдкреБрди: [caolan/async] рдореИрдВ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдзрдХреНрдХрд╛ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ? рдореБрдЭреЗ Async.js (рд╕рдорд╛рдирд╛рдВрддрд░ рдпрд╛ рджреМрдбрд╝ рдореЛрдб) (# 1104) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдореВрд▓ рдЬреЗрдПрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рд╕реНрдХреЛрдкрд┐рдВрдЧ рдХреНрд╡рд┐рд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрддреНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк async.map рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рднреА рдЪрд▓рддрд╛ рд╣реИ:

async.map ([рез, реи, рей, рек], рдлрд╝рдВрдХреНрд╢рди (рдПрдХреНрд╕, рдХреЙрд▓рдмреИрдХ) {
рдХреЙрд▓рдмреИрдХ (рд╢реВрдиреНрдп, рдЧрдгрдирд╛ (рдПрдХреНрд╕))
}, рдлрд╝рдВрдХреНрд╢рди (рддреНрд░реБрдЯрд┐, рдкрд░рд┐рдгрд╛рдо) {
рдЕрдЧрд░ (рдЧрд▓рддреА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдЧрд▓рддреА);
рд╡рд╛рдкрд╕реА;
}
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ("рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ:" + рдкрд░рд┐рдгрд╛рдо);
});

рд▓реЗрдХрд┐рди рдЕрд╕рд▓реА рдЬрд╡рд╛рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ Async рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

рд╡рд░ рдкрд░рд┐рдгрд╛рдо = [рез, реи, рей, рек] рдирдХреНрд╢рд╛ (рдЧрдгрдирд╛)

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рд╕реВрддреНрд░ рдХреЛ рд▓рд┐рдЦрд╛ рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ

рд╣рд╛рдп рдХрд╛рдУрд▓рди,

рдорджрдж рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ "рд░реЗрд╕" рдореЛрдб рдХреЛ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрдИ рдмрд╛рд░ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВред
рдореИрдВ рдмрд╕ рдЕрдкрдиреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЬреЛ рднреА рдкрд╣рд▓реЗ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рдЙрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
Async.race рдХреЛ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рд╕рд╛рджрд░,

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

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

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

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

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

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

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