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
未就绪时尝试处理会浪费大量时间!