Javascript NodeJS中的双回调
我不知道为什么下面的代码会触发两次回调:Javascript NodeJS中的双回调,javascript,node.js,callback,Javascript,Node.js,Callback,我不知道为什么下面的代码会触发两次回调: request(url, function(error, response, html) { if(!error){ var $ = cheerio.load(html); $('.globleRank').filter(function(){ var data
request(url, function(error, response, html) {
if(!error){
var $ = cheerio.load(html);
$('.globleRank').filter(function(){
var data = $(this);
rank_global = .children().first().text().trim();
json.rank_global = rank_global;
})
url = 'http://www.trafficestimate.com/www.'+site;
request(url, function(error, response, html) {
if(!error){
var $ = cheerio.load(html);
$('.chart-yoy span').filter(function(){
var visits = $(this).children().first().text();
json.visits = visits;
dat[site].push(json);
fs.writeFile(country_inp, JSON.stringify(dat, null, 4), function(err){
console.log('Data successfully written for '+site+'! - Check your project directory for the '+country_inp+' file');
})
})
}
});
}
});
控制台输出为:
已成功为Go.com写入数据!-检查项目目录中的US文件
已成功为Go.com写入数据!-检查项目目录中的US文件
因此,写作发生了两次
请提供帮助。可能有多个$'.chart yoy span'元素,这将使.filter回调执行多次 也许你想做什么
var $ = cheerio.load(html);
$('.chart-yoy span').each(function () {
var visits = $(this).children().first().text();
json.visits = visits;
dat[site].push(json);
});
fs.writeFile(country_inp, JSON.stringify(dat, null, 4), function (err) {
console.log('Data successfully written for ' + site + '! - Check your project directory for the ' + country_inp + ' file');
});
相反。谢谢。这是由多种因素造成的。我需要第一个,所以修改了你的代码