如何在javascript node.js中为全局变量赋值?

时间:2016-04-21 12:06:31

标签: javascript xml node.js variables

如何在javascript node.js中为全局变量赋值? 此函数用于从xml加载数据。我希望将此数据用作数组,但我的globalDataxml未定。

代码:

var fs = require('fs');
var parseString = require('xml2js').parseString;

function loadXml(cb)
        {
            fs.readFile('data-xml/test_data.xml', function (err, data)
            {
                parseString(data, function (err, result)
                {
                    cb(result.xml.record);
                });
            });
        }

        var globalDataxml = loadXml(function (yourRecods) {
            return yourRecods;
        });

1 个答案:

答案 0 :(得分:1)

就像你的变量一样:

var fs = require('fs');
var parseString = require('xml2js').parseString;

function loadXml(cb) {
    fs.readFile('data-xml/test_data.xml', function(err, data) {
        parseString(data, function(err, result) {
            cb(result.xml.record);
        });
    });
}
var globalDataxml = null;
loadXml(function(yourRecods) {
    globalDataxml = yourRecods;
});

你可以采用你的方式,因为fs.readFile是异步的。

警告

如果你想在之后使用你的变量(总是因为异步)

,这种方式将无效

更好的方法:

var fs = require('fs');
var parseString = require('xml2js').parseString;

function loadXml() {
    return new Promise((resolve, reject) => {
      fs.readFile('data-xml/test_data.xml', function(err, data) {
          if(err)return reject(err);
          parseString(data, function(err, result) {
            if(err)return reject(err);
            resolve(result.xml.record);
          });
      });
    });
}
loadXml().then(globalDataxml => {
  //do what you want with it
}).catch(err => console.log(err));