我在加载时让我的应用运行起来遇到了很大的麻烦。我不认为用户允许他们访问应用程序是非常公平的,直到它完成加载并准备好/响应。
请注意:我的应用程序中的其他所有工作正常,我无法按顺序运行函数。
function LOADINGapp(){
//app loads but allows user to enter before loading is finished
$.when(getToday()).then(reorderdivs()).then(getSomething()).then(setupSomethingElse()).then(loadAnotherSomething()).then(INITapp());
//app stops dead at getToday but (Crome javascript console) no errors
getToday(function(){reorderdivs(function(){getSomething(function(){setupSomethingElse(function(){loadAnotherSomething(function(){INITapp();});});});});});
//app loads but allows user to enter before loading is finished
getToday(reorderdivs(),getSomething(),setupSomethingElse(),loadAnotherSomething(),INITapp());
//getToday();
//reorderdivs();
//getSomething();
//setupSomethingElse();
//loadAnotherSomething();
//INITapp();
}
function INITapp(){
$('#SPLASH').hide();
}
有人可以帮助我,我不明白。完成并做一个研究基调以使其表现出来。
由于
答案 0 :(得分:2)
我之前没有使用过jquery,但看起来你需要将指针传递给方法。现在你实际上是一次性执行它们。尝试:
$.when(getToday())
.then(reorderdivs)
.then(getSomething)
.then(setupSomethingElse)
.then(loadAnotherSomething)
.then(INITapp);
(注意缺少的括号)
另外,请注意JS中唯一真正的异步对象是AJAX调用。 setTimeout不是异步的,它是一种排队方法。阅读John Resig的帖子:
答案 1 :(得分:1)
我通过跳跃解决它(只允许我的LOADINGapp函数一次做一件事),所以它分阶段工作。一旦一个阶段(一个函数)完成,它就会跳回到LOADINGapp函数。
var L=0;
function LOADINGapp(){
if(L==0){getToday();}
else if(L==1){reorderdivs();}
else if(L==2){getSomething();}
else if(L==3){setupSomethingElse();}
else if(L==4){loadAnotherSomething();}
else if(L==5){INITapp();};
}
function INITapp(){
$('#SPLASH').hide();
}
示例:
function getSomething(){
//app suff
//app suff
//app suff
L = 3;
LOADINGapp();
}
我唯一要做的就是做L ++;在LOADINGapp结束时,因为它可以节省全部写入。 PS:谢谢你们的努力
答案 2 :(得分:0)
这可能与异步函数有关。因此,您可以尝试使用回调来创建这些函数,如下所述:http://pietschsoft.com/post/2008/02/JavaScript-Function-Tips-and-Tricks.aspx。