【发布时间】:2017-08-02 15:57:54
【问题描述】:
我有一个工作函数,它检查具有特定类名的任何输入,然后为每个输入的值运行 getJSON 调用:
function getTopFeeds() {
if (jQuery('input.class-name').length > 0) {
jQuery.each(jQuery('input.class-name'),function(){
var feedName = jQuery(this).val();
jQuery.getJSON("https://api.url/"+feedName).success(function(data) {
if (!(data)) {
return;
}
var result = data.results[0];
if (result) {
// Here I create HTML list items to display API data
}
});
});
}
}
它可以工作,但是因为它是异步的,所以它不会按页面上的输入顺序返回。如何修改现有函数,使数据以与输入相同的顺序显示?
【问题讨论】:
-
每次调用
.each()都会为您提供一个索引。一种可能性是创建一个长度与您发出的请求数相同的数组,并且每次返回响应时,将响应放入数组中该迭代的索引处。 -
...然后,您可以在完成后处理它们,或者维护一个从
0开始的单独计数器,每次将新项目添加到数组时,尝试从当前迭代计数器的位置,直到它达到数组中的undefined值。这样您就可以为页面提供有序的更新,而无需等待它们全部完成。
标签: javascript jquery ajax each getjson