我有一组youtube频道名称:
var a = [“MyHarto”,“vlogbrothers”,“pbsideachannel”];
我想遍历每个频道,查询Youtube Data API,并将每个频道的订阅者总数相加。我的问题是,即使在$ .ajax调用中将async设置为false,订阅者计数也会立即打印到屏幕上而无需等待。这是我的代码:
var subscriberTotalCount = 0;
function grabStatsChannel() {
$('#youtube-stats-ch').html("Working...");
var myURL = "https://www.googleapis.com/youtube/v3/channels?";
var a = ["MyHarto", "vlogbrothers", "pbsideachannel"];
a.forEach(function(channel) {
var query_params = {
key : API_KEY,
forUsername : channel,
part : 'statistics'
};
$.ajax(myURL, {
data : query_params,
type : 'GET',
async: false,
dataType : 'jsonp',
success : function(data) {
$.each(data.items, function(i, entry) {
subscriberTotalCount += parseInt(entry.statistics.subscriberCount);
});
}
});
});
$('#youtube-stats-ch').html('');
$('#youtube-stats-ch').append('Found' + subscriberTotalCount + ' subscribers.
');
}
我尝试过设置一个似乎永远不会被解雇的ajaxcomplete函数。建议?我现在得到的是打印出0个订阅者,即使我可以看到日志记录表明Ajax调用成功并且订阅者计数最终设置正确。
是否有一种干净的方法可以阻止或进行最后的刷新?我认为将async设置为false可以在这里工作。不幸的是,如果我在成功函数中打印出总数,那么屏幕会随着每次总计更新而闪烁,这是我想要避免的。