2016-04-21 136 views
0

如何将函数赋值给javascript node.js中的全局变量? 该函数用于从XML加载数据。我想用这个数据作为数组,但是我的globalDataxml是未知的。如何将函数赋值给javascript node.js中的全局变量?

代码:

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

只是ASIGN您的变量是这样的:

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)); 
相关问题