回调没有返回所需的值

时间:2017-02-12 17:19:21

标签: javascript json callback

我正在尝试导出一个从端点抓取XML的函数,解析它并将其转换为json对象。我无法让json对象返回。我很熟悉解析正在运行异步并需要回调来返回值。我似乎无法弄清楚如何正确地写出来。

另一个注意事项......导出此功能的“最佳”方法是什么?我正在尝试创建一个实用程序,我发送任何产生xml的端点,然后它吐出一个json。我是否需要在导出的函数中包含我的需求?或者我应该专门为以下方法保留它?

getXmlToObj.js

    module.exports = function getXML(xmlUrl,callback){
// Requires --------------------------------------------------------------------
  var https = require('https'),
    xml2js = require('xml2js'),
    parser = new xml2js.Parser();
// End Requires ----------------------------------------------------------------

  // We append the XML as a string to data
  var data = "";

  //error check on xml2js parse
  parser.on('error', function(err) { console.log('Parser error', err); });


    https.get(xmlUrl, function(res) {
        if (res.statusCode >= 200 && res.statusCode < 400) {
          res.on('data', function(data_) {
             data += data_.toString();
          });
          res.on('end', function() {
            parser.parseString(data, function(err, result) {
              //console.log('FINISHED', err, result);
              //var json = JSON.stringify(result)
              //console.log(json)
              return callback(result);
            });
          });
        }
    });
};

阿维-WX-API.js

var getXml = require('./getXmlToObj');


url = 'https://aviationweather.gov/adds/dataserver_current/httpparam?datasource=metars&requestType=retrieve&format=xml&mostRecentForEachStation=constraint&hoursBeforeNow=1.25&stationString=KFRG'

var x = getXml(url,function(json){
  return json;
})
console.log(x)

0 个答案:

没有答案