【发布时间】:2018-04-08 23:25:42
【问题描述】:
我一直在使用 request 遍历多个 XML 条目,并使用cheerio.js 将每篇文章、日期和网址返回到控制台。主要问题是每次输出都会以不同的顺序出现,因为 Request 是一个异步函数。一般来说,我对 javascript 真的很缺乏经验,并且想知道如何检索一致的输出(我一直在阅读有关异步和承诺的内容,我只是不确定如何实现它们)。 这是我的代码:
var count = 0;
for(var j = 0; j < arrNames.length; j++){
request('http://dblp.org/search/publ/api?q=' + arrNames[j], function(error, response, html){
if (!error && response.statusCode == 200){
var $ = cheerio.load(html, {xmlMode: true});
console.log($('query').text()+'\n');
$('title').each(function(i, element){
var title = $('title').eq(i).text();
var year = Number($('year').eq(i).text());
var url = $('ee').eq(i).text();
if (year >= arrTenures[count]){
console.log(title);
console.log(year);
console.log(url + '\n');
}
});
count++;
}
});
}
【问题讨论】:
-
如果你使用 Promise,它会是这样的
Promise.all( arrNames.map( name => request("http://dblp.org/search/publ/api?q=" + name) ).then( arrayWithResult => { /* do your thing here*/ })
标签: javascript node.js request cheerio