Javascript 在长作业后调用函数(回调)

Javascript 在长作业后调用函数(回调),javascript,jquery,ajax,Javascript,Jquery,Ajax,我有这样的功能: function update_List(){ LIST=[]; $.each(feed_urls,function(index,value){ $.getJSON(value, function(data) { $.each(data.feed.entry,function(i,val){ LIST.pu

我有这样的功能:

function update_List(){
            LIST=[];
            $.each(feed_urls,function(index,value){
                $.getJSON(value, function(data) {
                    $.each(data.feed.entry,function(i,val){
                           LIST.push(val.content.src);
                    });
                });
            });
          some_function();
        }
问题是
some_函数()列表
完全更新之前调用code>

我如何解决这个问题

我尝试使用自定义事件,并且在回调中查找了一些内容,但没有任何效果


编辑:我希望只有在所有
getJSON
调用完成后才能调用
some_function()

您希望调用getJSON中的某个函数(),以便只有在异步调用完成后才能完成

function update_List(){
            LIST=[];
            $.each(feed_urls,function(index,value){
                $.getJSON(value, function(data) {
                    $.each(data.feed.entry,function(i,val){
                           LIST.push(val.content.src);
                    });
                    some_function();
                });
            });
        }

您希望在getJSON中调用一些函数(),以便只有在异步调用完成后才能完成

function update_List(){
            LIST=[];
            $.each(feed_urls,function(index,value){
                $.getJSON(value, function(data) {
                    $.each(data.feed.entry,function(i,val){
                           LIST.push(val.content.src);
                    });
                    some_function();
                });
            });
        }

如果要在所有Ajax调用完成后调用函数,应使用:


如果要在所有Ajax调用完成后调用函数,应使用:

some_函数()
永远不会等待,因为
$。getJSON
是一个异步操作

function isEveryoneDone(theList){
  var isDone = false;
  for(var jsonStatus = 0; jsonStatus< theList.length;jsonStatus++){
    if(theList[jsonStatus]){
     isDone &=theList[jsonStatus].isDone;
     if(!isDone){ break;}
    }else{
     break;
    }
  }
  return isDone;
}
function update_List(){
            LIST=new Array(feed_urls.length);
            $.each(feed_urls,function(index,value){
                $.getJSON(value, function(data) {
                    $.each(data.feed.entry,function(i,val){
                           LIST.push({"isDone":true,"src":val.content.src});
                           if(isEveryoneDone(LIST)){
                             doSomething();
                           }
                    });
                });
            });
        }
函数为每个人一个(列表){
var isDone=假;
对于(var jsonStatus=0;jsonStatus
一些函数()
永远不会等待,因为
$。getJSON
是一个异步操作

function isEveryoneDone(theList){
  var isDone = false;
  for(var jsonStatus = 0; jsonStatus< theList.length;jsonStatus++){
    if(theList[jsonStatus]){
     isDone &=theList[jsonStatus].isDone;
     if(!isDone){ break;}
    }else{
     break;
    }
  }
  return isDone;
}
function update_List(){
            LIST=new Array(feed_urls.length);
            $.each(feed_urls,function(index,value){
                $.getJSON(value, function(data) {
                    $.each(data.feed.entry,function(i,val){
                           LIST.push({"isDone":true,"src":val.content.src});
                           if(isEveryoneDone(LIST)){
                             doSomething();
                           }
                    });
                });
            });
        }
函数为每个人一个(列表){
var isDone=假;
对于(var jsonStatus=0;jsonStatus
$。每个
都不是异步的。
$。每个
都不是异步的。请注意,他希望在所有
getJSON
调用完成后调用
一些函数
。这是可行的,但在
列表
未就绪时尝试处理会浪费大量时间!请注意,他希望在所有
getJSON
调用完成后调用
一些函数
。这是可行的,但在
LIST
未就绪时尝试处理会浪费大量时间!