2017-10-26 7 views
0

현재 들어오는 JSON 데이터를 구문 분석하고이를 차트로 표시하는 함수를 작성하고 있습니다. 그렇게하기 위해 for 루프를 사용하고 JSON 데이터를 이와 같은 배열에 채우고 있습니다.NodeRed 함수의 배열에 대한 비동기 연산 수행

var allMsg = []; 

async.each (jsonData.dataSet, 
    function (sensorItem, callback) { 
    for each item in array .... { 
     var msg1 = {}; 
     msg1.req = msg.req; 
     msg1.res = msg.res; 
     msg1.payload = "some payload"; 
     allMsg.push(msg1); 
    } 
    callback(); 
    }, 
    function(err) { 
    node.send([allMsg]; 
    } 
}; 
return; 
} 

위 예제는 allMsg [0] 인 첫 번째 요소 만 보냅니다. 비동기 작업을 처리하려면 msg를 반환하는 것과는 반대로 node.send를 수행해야하지만 node.send를 어디에서해야하는지 잘 모르겠다. 누구든지 도움을받을 수 있다면 매우 훌륭 할 것입니다. . 감사! 당신이 each

다른 옵션에 callback 인수로 전달하는 함수를 선언 할 필요가 주어진 예에서

답변

0

는이 생성보다는 allMsg 배열에 밀어 것처럼 각 메시지를 게시하는 것입니다. 예 :

async.each (jsonData.dataSet, 
    function (sensorItem, callback) { 
    for each item in array .... { 
     var msg1 = {}; 
     msg1.req = msg.req; 
     msg1.res = msg.res; 
     msg1.payload = "some payload"; 
     node.send(msg1); 
    } 
    }, 
    function(err) { 
    //node.send([allMsg]; 
    } 
}; 

하지만 http-inhttp-response 노드 (msg.res/msg.req)의 한 쌍의 사이에이 기능 노드를 사용하는 것 같습니다. http-response은 수신 한 첫 번째 메시지 만 회신하므로이 방법으로 여러 메시지를 스트리밍 할 수 없기 때문에이 방법이 작동하지 않습니다. join 노드를 사용하여 필요한 경우 모든 결과가 완료되기를 기다릴 수 있습니다.

+0

OK 각 msg1에 대해 node.send에 더 적합 할 수 있습니까? http-in ->이 함수 -> switch -> 10 charts 조인을 사용하면 스위치와 차트를 결합하여 msg를 결합 할 수 있습니까? – sonic98

+0

답변에 대한 두 번째 제안은 다음과 같습니다. – hardillb