在NodeRed函数

时间:2017-10-26 01:58:23

标签: node.js asynchronous node-red

我目前正在编写一个函数来解析一些传入的JSON数据并将其显示为图表。 为了做到这一点,我使用for循环并在这样的数组中填充JSON数据。

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]。 我知道要处理异步操作你需要做node.send而不是返回msg,但是我不太确定应该在哪里做node.send 如果有人能提供帮助,那就太棒了......谢谢!

1 个答案:

答案 0 :(得分:0)

在给出的示例中,您需要声明一个函数作为window.location.href = 'dashboard.php' 参数传递给callback

另一种选择是只发布每条消息,而不是将它们推送到each数组。 e.g。

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-in节点(msg.res / msg.req)之间使用此函数节点。这不起作用,因为http-response只会回复它收到的第一条消息,您不能以这种方式流式传输多条消息。您可以使用http-response节点等待所有结果完成(如果需要)。