Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 页面在更新之前等待所有AJAX调用完成_Javascript_Jquery_Html_Ajax_User Interface - Fatal编程技术网

Javascript 页面在更新之前等待所有AJAX调用完成

Javascript 页面在更新之前等待所有AJAX调用完成,javascript,jquery,html,ajax,user-interface,Javascript,Jquery,Html,Ajax,User Interface,有时在我的页面上,我会同时执行很多ajax调用。其思想是,每个元素在其数据可用时都会得到更新(我不想让调用排队)。但是,有时候,在所有ajax调用完成之前,网页不会更新任何元素 例如,我正在更新的一行中有四幅图片——每幅图片都有自己的ajax回调,一旦数据可用,它将更新其源代码;代码如下所示: for (var i = 0; i < numPictures; i++ ){ Dajaxice.Images.load_picture(callback_function, {'picture

有时在我的页面上,我会同时执行很多ajax调用。其思想是,每个元素在其数据可用时都会得到更新(我不想让调用排队)。但是,有时候,在所有ajax调用完成之前,网页不会更新任何元素

例如,我正在更新的一行中有四幅图片——每幅图片都有自己的ajax回调,一旦数据可用,它将更新其源代码;代码如下所示:

for (var i = 0; i < numPictures; i++ ){
  Dajaxice.Images.load_picture(callback_function, {'pictureId': i});
}
for(变量i=0;i
回调函数在图像就绪后将图像放入其UI元素:

imgSnippet = '<img src="' + data.img_source + '"/>'
$("#" + data.container_id).html(imgSnippet);
imgSnippet=''
$(“#”+data.container_id).html(imgSnippet);
(数据是此函数从服务器接收的对象)

我使用(正如您在示例中看到的)(django插件)实现AJAX功能。在服务器端,我有一个Apache(2.2),通过mod_wsgi运行django 1.3

执行时,即使某些ajax调用提前完成(我可以在服务器上看到),页面也不会更新任何元素,直到最后一次调用返回

有什么建议吗


谢谢,

我建议创建一个数组来保存所有图像,并创建一个新函数,当您从服务器获取所有图像时,该函数将显示图像,并且在每个图像的回调中,当计数器等于图像数时,增加q预定义计数器,显示照片并将计数器归零,您可以在这张照片应该一直到他们给你看为止
很抱歉,我没有编写您的代码,但我在手机上。如果我的答案不清楚,我可能会稍后为您发布此代码。您可以通过使用带有0或1毫秒超时的
setTimeout
调用包装回调函数的内容来解决此问题。这使系统可以更新屏幕。

这是的副本,人们似乎已经回答了您的问题。不是这样吗?ajax调用是同步的吗?如果是这样,在将javascript控件返回系统之前,您可能无法获得屏幕更新。@dyoo:不错,但事实并非如此。我在多线程Apache上看到了这种情况server@jfriend00:调用不同步。至少我希望他们不是。默认情况下,不是所有ajax调用都应该是异步的吗?@Goro-
Dajaxice.Images.load\u picture
可以是同步的,也可以是非同步的,具体取决于它们的配置方式。Ajax调用通常是非同步的(这是“Ajax”中的“A”所代表的,因为这是最好的用户体验,但在某些浏览器中可以将它们配置为同步。