2016-04-21 12 views
0

Wie kann ich Funktion in javascript node.js globalen Variable zuweisen? Diese Funktion dient zum Laden von Daten aus XML. Und ich möchte diese Daten als Array verwenden, aber meine globalDataxml ist nicht definiert.Wie Funktion zuweisen globale Variable in Javascript node.js?

Code:

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; 
     }); 

Antwort

1

Gerade asign Ihre Variable wie folgt aus:

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; 
}); 

Sie können nicht die Art und Weise yuou tun, weil fs.readFile async ist.

Warnung

Auf diese Weise wird nicht funktionieren, wenn Sie nach der Variable verwenden möchten (immer wegen der Asynchron)

besseren Weg, es zu tun:

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)); 
Verwandte Themen