如何将回调数据传递给Node.js中的第二个函数?

时间:2016-12-16 16:44:22

标签: javascript node.js

我正在使用tcp-ping来ping服务器,然后我想创建一个回调函数,它将数据通过request库发送到我的数据库。我无法弄清楚如何让回调将数据发送到第二个函数。

问题是没有错误,但Min,Max和Avg的表单数据没有记录在mongodb中。我不知道如何检索数据,或者知道数据是否被发送。

tcpp.ping({ address: 'www.google.com' }, function(err, data) {

    postPingData(function(err, data){
      if(err){
        console.log(500, { error: 'something blew up' });
      } else {
        console.log(data); // I understand this is incorrect, but I don't know how else I'm supposed to send data. 
      }
    });

    console.log(data);
});

var postPingData = function(callback){
    console.log(callback);
    request.post({
      headers: {'content-type' : 'application/x-www-form-urlencoded'},
      url:     'http://localhost:8080/api/pingdata',
      form:    {
                    ping_id: "5852fd1976ba7111cd9b78aa",
                    min: callback.min,
                    max: callback.max,
                    avg: callback.avg
                }
    }, function(error, response, body){

    if (!error && response.statusCode == 200) {
      status = "succeeded";
      callback(null, {status : status});
    } else {
      callback(error);
    }
  })
};

1 个答案:

答案 0 :(得分:0)

基本上,您似乎希望将传递给回调的数据参数注入tcpp.ping - 如果成功,则将ping操作的结果 - 注入postPingData函数:

tcpp.ping({ address: 'www.google.com' }, function(err, data) {

    postPingData(data, function(err, data){

    ...

var postPingData = function(data, callback){

    ...

    form: {
             ping_id: "5852fd1976ba7111cd9b78aa",
             min: data.min,
             max: data.max,
             avg: data.avg
          }