2014-10-17 2 views
4

위에서 설명한 내용을 수행 할 수있는 최소한의 예제를 만들려고합니다. 이러한 목적을 위해, 여기에 내가 1node.js에서 async.parallel에 인수 전달

부정적인 출력에보고 싶은 결국 최소한의 예를 들어, 내 시도하는 것은 -1

플러스 2 중 하나가 3

입니다

내 코드는 다음과 같습니다.

var async = require('async'); 
var i, args = [1, 2]; 
var names = ["negative", "plusOne"]; 

var funcArray = [ 
    function negative(number, callback) { 
     var neg = 0 - number; 
     console.log("negative of " + number + " is " + neg); 
     callback(null, neg); 
    }, 
    function plusOne(number, callback) { 
     setTimeout(function(number, callback) { 
      var onemore = number + 1 
      console.log("plus one of " + number + " is " + onemore); 
      callback(null, onemore); 
     }, 3000); 
    }]; 

var funcCalls = {}; 
for (i = 0; i < 2; i++) { 
    funcCalls[names[i]] = function() { 
     funcArray[i].apply(this, args[i]); 
    }; 
} 

async.parallel(funcCalls, function(error, results) { 
    console.log("Parallel ended with error " + error); 
    console.log("Results: " + JSON.stringify(results)); 
}); 

이름이 지정된 개체를 async.parallel에도 전달하고 있습니다. 배열을 전달하면 (그리고 완전히 이름을 잊었을 때) 나에게도 해답이 될 것이지만, 나는 그러한 객체를 전달하는 것에 더 관심이있다.

내 목표를 달성하기위한 아이디어가 있습니까?

+0

async.apply를 사용할 수 있습니까? – thefourtheye

+0

당신이 필요로하는 것이면'f.name'을 가진 함수의 이름을 얻을 수 있습니다 ...하지만 당신이하고 싶은 것을 이해하는지 모르겠습니다. – elclanrs

+0

제목에서 async.parallel이라고 부르는 각 함수에 다른 인수를 전달하려고합니다. 그래서, 나는'negative (1, cb)'와'plusOne (2, cb)'와 병렬로 실행하고 싶다. 이해가 되니? 일부 피어의 등록 중에 다른 컬렉션의 개체를 병렬로 만들려고한다는 아이디어가 있습니다. 그런 함수에 전달하려는 (단일) 인수를 적어두고 async.parallel로 호출 할 수 있습니다. 코드를 훨씬 더 깔끔하게 만듭니다. 내가 말하는 말을 이해하게 되니? – MightyMouse

답변

13

bind 초기 값입니까? 그러면 다음과 같이됩니다 :

async.parallel([ 
    negative.bind(null, -1), 
    plusOne.bind(null, 3) 
], function(err, res) { 
    console.log(err, res); 
}); 

물론 다양한 매개 변수로 목록을 생성 할 수 있습니다. 이것은 단지 단순화 된 접근 방식에 대한 아이디어를 제공하기위한 것입니다.

+0

아주 좋아 보인다. 나는 'bind'를 시도한 인상을 받았지만 분명히 올바르게하지 못했습니다. :) 물론 나는 동의하고있다. 시간 내 주셔서 감사합니다. – MightyMouse

+2

probs 없음. 문맥 (예 :'this'에'null')을 전달하는 것을 기억하는 것이 매우 중요합니다. 그렇지 않으면 작동하지 않을 것입니다. 'bind'는'async'와 잘 맞습니다. –

+0

대단히 고마워요! :) – MightyMouse

0

대신 당신은 왜 당신이 그렇게하고 싶어 너무

async.parallel(
[ 
    async.apply(negative, -1), //callback is automatically passed to the function 
    async.apply(positive, 3) 
], 
(error, results) => { 
console.log(error, results); 
})