0
所以我有一個Node.js的功能,上面寫着6個XML文件並查找特定的搜索項,並將其返回給用戶..製作的XML for循環中解析打電話回來
...
var xmlresult = '<?xml version="1.0" encoding="utf-8"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xml:lang="en_EN" version="2.0"><channel>';
for (var i = 1; i <= 6; i++) {
filename = i + '.xml';
fs.readFile(filename, 'utf8', function(err, data) {
if (err) {
return console.log(err);
}
var doc = libxml.parseXmlString(data);
var xpath = "/rss/channel/item[contains(translate(description, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),'"+ userquery + "')]";
console.log(xpath);
var result = doc.find(xpath);
console.log(result);
result.forEach(function(item) {
xmlresult += item;
// console.log(item.text());
});
});
}
xmlresult += "</channel></rss>";
// console.log(result[0].text());
respond(xmlresult);
function respond(data) {
// response.set('Content-Type','text/xml').send(data);
response.write(data);
response.end();
}
...
現在的問題即使在xml解析發生之前,響應也會發生。我知道,因爲節點是異步的。現在,如果我試圖通過添加語句for循環
if(i==6){
xmlresult += "</channel></rss>";
respond(xmlresult);
}
它不會仍然解決,因爲FS我想這個問題要解決的問題和libxmljs去異步。我也嘗試過。所以我該怎麼做?