ํ์ฌ 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
}
์ด๋ค ์์ด๋์ด๋ผ๋?
๊ฐ์ฌ
์ฌ๊ธฐ์๋ ๊ธฐ๋ณธ์ ์ธ JS ๋ณ์ ๋ฒ์ ์ง์ ๋ฌธ์ ๋ฅผ ํฌํจํ์ฌ ๋ง์ ๊ฒ๋ค์ด ์์ต๋๋ค. ๊ทํ์ ์ง๋ฌธ์ ๋ํ ์งง์ ๋๋ต์ 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)
๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค ...
๋ด iPhone์์ ๋ณด๋ธ
2016๋ 4์ 7์ผ ์คํ 7์ 42๋ถ์ Alex Early [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ฌ๊ธฐ์๋ ๊ธฐ๋ณธ์ ์ธ JS ๋ณ์ ๋ฒ์ ์ง์ ๋ฌธ์ ๋ฅผ ํฌํจํ์ฌ ๋ง์ ๊ฒ๋ค์ด ์์ต๋๋ค. ๊ทํ์ ์ง๋ฌธ์ ๋ํ ์งง์ ๋๋ต์ async.map์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ณ๋ ฌ๋ก๋ ์คํ๋ฉ๋๋ค.
async.map([1, 2, 3, 4], function(x, ์ฝ๋ฐฑ){
์ฝ๋ฐฑ(๋, ๊ณ์ฐ(x))
}, ํจ์(์ค๋ฅ,๊ฒฐ๊ณผ){
๋ง์ฝ (์ค๋ฅ) {
console.log(์ค๋ฅ);
๋ฐํ;
}
console.log("๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. " + result);
});
๊ทธ๋ฌ๋ ์ง์ ํ ๋๋ต์ Async๊ฐ ์ ํ ํ์ํ์ง ์๋ค๋ ๊ฒ์ ๋๋ค.var ๊ฒฐ๊ณผ = [1, 2, 3, 4].map(๊ณ์ฐ)
โ
์ค๋ ๋๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
์๋
์นด์ค๋
๋์์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์๋ฒฝํ๊ฒ ์๋ํ์ง๋ง "๊ฒฝ์ฃผ" ๋ชจ๋๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์ถ์ต๋๋ค.
์ด๋ฏธ ์ฌ๋ฌ ๋ฒ ์๋ํ๋๋ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ด ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ณ๋ ฌ๋ก ์คํํ๊ณ ๋จผ์ ์๋ฃํ ์ฌ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์ถ์ต๋๋ค.
Async.race๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น?
๋ฌธ์ ์ธ์ฌ,
์ํ๋ ๋ ๋ณด๋ ๋ก
๋ ์ง: 2016๋
4์ 7์ผ ๋ชฉ์์ผ 18:42:25 -0700
๋ณด๋ธ ์ฌ๋: ์๋ฆผ@github.com
๋ฐ๋ ์ฌ๋: [email protected]
์ฐธ์กฐ: [email protected]
์ ๋ชฉ: Re: [caolan/async] ์ธ์๊ฐ ๋ค๋ฅธ ํจ์๋ฅผ ๋ฐฐ์ด์ ๋์ ์ผ๋ก ํธ์ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? Async.js(๋ณ๋ ฌ ๋๋ ๊ฒฝ์ ๋ชจ๋)๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค(#1104).
์ฌ๊ธฐ์๋ ๊ธฐ๋ณธ์ ์ธ JS ๋ณ์ ๋ฒ์ ์ง์ ๋ฌธ์ ๋ฅผ ํฌํจํ์ฌ ๋ง์ ๊ฒ๋ค์ด ์์ต๋๋ค. ๊ทํ์ ์ง๋ฌธ์ ๋ํ ์งง์ ๋๋ต์ async.map์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ณ๋ ฌ๋ก๋ ์คํ๋ฉ๋๋ค.
async.map([1, 2, 3, 4], function(x, ์ฝ๋ฐฑ){
์ฝ๋ฐฑ(๋, ๊ณ์ฐ(x))
}, ํจ์(์ค๋ฅ,๊ฒฐ๊ณผ){
๋ง์ฝ (์ค๋ฅ) {
console.log(์ค๋ฅ);
๋ฐํ;
}
console.log("๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. " + result);
});
๊ทธ๋ฌ๋ ์ง์ ํ ๋๋ต์ Async๊ฐ ์ ํ ํ์ํ์ง ์๋ค๋ ๊ฒ์ ๋๋ค.
var ๊ฒฐ๊ณผ = [1, 2, 3, 4].map(๊ณ์ฐ)
โ
์ค๋ ๋๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
์๋ ์นด์ค๋
๋์์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์๋ฒฝํ๊ฒ ์๋ํ์ง๋ง "๊ฒฝ์ฃผ" ๋ชจ๋๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์ถ์ต๋๋ค. ์ด๋ฏธ ์ฌ๋ฌ ๋ฒ ์๋ํ๋๋ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ด ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ณ๋ ฌ๋ก ์คํํ๊ณ ๋จผ์ ์๋ฃํ ์ฌ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์ถ์ต๋๋ค.
Async.race๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น?
๋ฌธ์ ์ธ์ฌ,
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ๊ธฐ์๋ ๊ธฐ๋ณธ์ ์ธ JS ๋ณ์ ๋ฒ์ ์ง์ ๋ฌธ์ ๋ฅผ ํฌํจํ์ฌ ๋ง์ ๊ฒ๋ค์ด ์์ต๋๋ค. ๊ทํ์ ์ง๋ฌธ์ ๋ํ ์งง์ ๋๋ต์
async.map
์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ณ๋ ฌ๋ก๋ ์คํ๋ฉ๋๋ค.๊ทธ๋ฌ๋ ์ง์ ํ ๋๋ต์ Async๊ฐ ์ ํ ํ์ํ์ง ์๋ค๋ ๊ฒ์ ๋๋ค.