我有这段代码,我运行parseString()
从xml文件中提取一些信息
function parseTime(){
var parser = new xml2js.Parser();
var data = fs.readFileSync('C:\\Temp\\tasks\\acis\\110-1100.sat\\110-1100.sat.response.xml', {encoding:'utf8'});
parser.parseString(data, function (err, result) {
var timeString = result.Message.Response[0].Events[0].MessageReportEvent[8].$.Message;
var fileTime = timeString.substr(13,20);
var filetimeVal = parseFloat(fileTime);
console.log(filetimeVal);
return filetimeVal;
});
};
我应该做什么更改才能同步运行parseString
,或者有办法通过不同的同步方法提取xml数据
答案 0 :(得分:0)
parseString
的回调已经同步运行。您的程序将在到达任何其他代码行之前到达已解析的结果。
默认情况下,async
次切换为false
。
然而,开发人员警告说,此默认值可能会在未来发生变化。
async(默认为false):回调应该是异步吗?这可能是一个 如果您的代码依赖于同步执行,则会发生不兼容的更改 回调。 xml2js的未来版本可能会更改此默认值,因此 建议不要依赖于同步执行。添加 0.2.6。
答案 1 :(得分:-1)
您可以使用bluebird
来宣传它。在被宣判之后,带回调的原始函数将成为允许您执行此操作的Promise:
parser.parseStringAsync(data)
.then(doYourThingHere)
function doYourThingHere(result) {
}