我遇到了一些使用ajax从数据库中提取值的异步JavaScript代码的问题。推迟setTimeout()
本质上,我想要做的是刷新页面,一旦列表已填充。为此,我尝试插入下面的代码到填充列表功能:
var timer1;
timer1 = setTimeout([refresh function], 1000);
正如你可能想象,当名单人口占不到1秒能正常工作,但会造成一些问题,当它需要更长的时间。于是,我只好将这段代码为呼吁各Ajax调用成功功能的想法:
clearTimeout(timer1);
timer1 = setTimeout([refresh function], 1000);
所以从理论上讲,每一个列表元素提取时间计时器应该重置,这意味着刷新功能应只有在最终列表元素成功检索后才会被调用1秒。然而,在执行过程中,发生的所有情况是,定时器1被重置一次,第一次到达第二块代码。
任何人都可以看到问题可能是什么?或者如果有更好的方法来做到这一点?谢谢。
==========
编辑:要清除我的Ajax调用是如何工作的:与代码的结构的问题之一是,
Ajax调用实际上是嵌套的;原始ajax调用的回调方法本身就是另一个ajax调用,其回调方法包含数据库事务
(错误 - 请参见下文)。另外,我有两个这样的方法同时运行。我需要的是一种确保在刷新页面之前所有级别的所有呼叫都已完成的方法。这就是为什么我认为给这两种方法一个计时器,并在每次调用一个回调方法时重置它,都会继续推回执行,直到所有线程都完成为止。
说实话,代码非常复杂 - 大约140行,包括辅助方法 - 我不认为在这里发布它是可行的。对不起 - 如果没有人可以帮助没有代码,那么也许我会咬紧牙关,并尝试在这里以一种具有某种意义的格式复制它。
==========
EDIT2:这里是什么样的方法都尝试做一般的工作流程。该功能是一个“同步”功能,既可以向服务器发送数据,也可以从服务器获取数据。
- 一函数被调用它从本地数据库
- 我取回物品。每次获取物品时,将其发送到服务器(ajax)
a。当ajax回拨时,该项目在本地更新以反映其成功/失败
二。从本地数据库中检索(单独的)项目列表
- i。每次获取物品时,从服务器获取与物品ID相匹配的物品(ajax)
- a。在成功从服务器获取数据时,将比较项目
- b。如果服务器端项目更新,则更新本地项目
所以我插入上面第二个代码块的位置在'我'中。每个方法的部分,换句话说,ajax应该回调(重复)的地方。我意识到我在上面的评论中出现了错误;实际上从来没有嵌套的ajax调用,而是数据库事务内的ajax调用中的数据库事务。
你对AJAX有什么用?即使是内置的AJAX方法,您也可以在AJAX完成时执行回调。请显示余下的代码 – Cfreak 2012-08-09 18:02:22
够公平,代码即将出现。 – 2012-08-09 18:16:06
因此,回顾一下我的代码,我不认为有一个可行的方法来发布它,至少有足够的理由。希望我的澄清有所帮助 - 如果没有,我会尝试以其他方式描述它,或者只是在没有人能提供帮助的情况下尝试发布代码。 – 2012-08-09 18:27:58