【发布时间】:2013-04-30 14:26:23
【问题描述】:
下午,我遇到了一个问题,我需要运行一个函数,然后在完成之后,运行下一个,并为四个函数执行此操作,我已经有一段时间试图找到正确的布局我的函数调用的语法,似乎找不到任何东西来解决这个特定的场景。
html:
<div id = "putcontenthereafterajax">
</div><!--end putcontenthereafterajax-->
<div id = "putfooterhereafterajax">
</div<!--end putfooterhereafterajax-->
jquery:
$(window).load(function() {
function preload(arrayOfImages) {
$(arrayOfImages).each(function(){
$('<img/>')[0].src = this;
//alert("I cached "+this+"");
});
$('#progressbarinner').css("width","200px");//change the width of the inner progress bar div
}
function changecss(){
$('.hidetillcache').css("visibility","visible");//make the page visible
$('#loadingscreen').fadeOut("slow");
}
function contentajax(){
$.post("templates/content.php",
{
whatamidoing:"imgettingthecontent"
},
function(data){
$('#putcontenthereafterajax').after(''+data+'');
$('#progressbarinner').css("width","400px");//change the width of the inner progress bar div
});
}
function footerajax(){
$.post("templates/footer.php",
{
whatamidoing:"imgettingthefooter"
},
function(data){
$('#putfooterhereafterajax').after(''+data+'');
$('#progressbarinner').css("width","500px");//change the width of the inner progress bar div
});
}
preload([
'images/careers.jpg',
'images/careers.png',
'images/contact.jpg',
'images/facebook.png',
'images/footer.png',
'images/footerblack.png',
'images/footergrey.png',
'images/home.jpg',
'images/media.jpg',
'images/media.png',
'images/myitv3.jpg',
'images/newindex.jpg',
'images/newindex.png',
'images/services.jpg',
'images/twitter.png'
], contentajax(), footerajax(), csschanges());
});
基本上我有一个加载栏,在每个函数完成后会填满一点,这反过来又要求每个函数以正确的顺序一个接一个地运行,所有函数都可以工作,缓存和 ajax 甚至CSS更改工作。但是我似乎无法找到一种方法来强制它们以正确的顺序运行并等待运行直到前一个完成以补充加载栏。有人有什么想法吗?
【问题讨论】:
-
在函数1结束时调用函数2。
function1() { doStuff(); function2(); } -
@RickViscomi 这不是我在这个例子中所做的吗?我尝试过许多其他方法
-
你可以尝试同步调用ajax函数:api.jquery.com/jQuery.ajax/#jQuery-ajax-settings
-
这真的让我很恼火,没有简单的方法可以做到这一点,在 php 中我可以按照我需要调用它们的顺序列出函数......但 javascript 似乎喜欢一次运行所有内容
-
听起来您希望以同步顺序执行。在 ajax 调用中使用 async: false ,或者使用每个 next 函数作为对当前函数的成功回调,并且不要在预加载中循环它们。成功:函数(数据,textStatus,jqXHR){successCallback(successCallbackArgs); }
标签: javascript jquery function timing