无法获取正确的返回对象

Cannot get correct return object.

本文关键字:返回 对象 获取      更新时间:2023-09-26
serviceApp.factory('xml2json', function() {
return {
Convert: function(path) {
  var fs = require('fs');
  var xml2js = require('xml2js');
  var parser = new xml2js.Parser();
  var json;
    fs.readFile(path, function(err, data) {
      parser.parseString(data, function(err, result) {
        json = result.object.property[9].steps[0].object[27].property[1].property[0].object;
        console.log(json);
      });
    });
    console.log(json + '1');
    return json;
  }
}
});

这是我的服务^^ 无论出于何种原因,第一个控制台日志都可以正常工作,如预期的那样。第二个是未定义的。当我返回 json 时,它返回未定义。我试过计时器,我试过承诺,我试过回调。我不知道如何使它从解析器.parseString() 返回结果;请帮忙。

serviceApp.controller('PPQACtrl', function($scope, SqlConFactory, CreateRequest, EmailService, xml2json) {
    var path = '/some/path/to/file.xml'
    var myjson = xml2json.Convert(path);
    console.log(myjson);

});

由于调用是异步的 - 您可以使用 promise 或回调来返回数据。下面是重构为使用回调的代码示例:

服务:

serviceApp.factory('xml2json', function() {
    return {
        Convert: function(path, callback) {
            var fs = require('fs');
            var xml2js = require('xml2js');
            var parser = new xml2js.Parser();
            var json;
            fs.readFile(path, function(err, data) {
                parser.parseString(data, function(err, result) {
                    json = result.object.property[9].steps[0].object[27].property[1].property[0].object;
                    callback(json);
                });
            });
        }
    }
});

和用法:

xml2json.Convert(path, function(json) {
    console.log(json);
});