有时,在业务事件
处理过程中,可能会触发一个按钮或另一个触发事件的事件。
我们需要
执行两个以上Ajax请求,但我们可能会担心Ajax请求执行的
顺序。有时Ajax请求是有序的,这可能导致各种问题。
现在,例如,有两个Ajax事件,ajax1,ajax2
名为main的
方法调用执行条目。
一
函数main(){
ajax1(数据,回调);
ajax2(数据,回调);
}
如果我们按照上面的方法,看来似乎让ajax1先执行,然后执行后ajax2。如果你不去想它,有些人会认为ajax1完了再ajax2。真的会那样吗
答案是不一定的,当然,我们不必考虑太多关于谁先执行,谁首先返回的事实,即有多个Ajax请求不需要执行返回序列。
如果您考虑Ajax事件序列和返回顺序
如果是这样的话,如何按照返回顺序
解决Ajax事件的顺序
现在,当然,您应该考虑Ajax回调函数,OD,这是一个好主意。
现在用这种方式改变方式,如下所示
函数main(){
ajax1(数据,ajax2());
}
所以看起来,你认为非常合适吗真的它真的非常远吗
也许,但在某些
情况下,可能会有点不方便,当然,也许你不会,但我遇到了一个特殊的情况。
例如,以下可能是可能的
函数main(){
aa(数据);
ajax1(数据,回调);
}
函数aa(缬氨酸){
这里是
输入数据包的变化,当然,这里不写
ajax2(数据,ajax2callback);
}
功能ajax2callback(){
console.log((ajax2callback)Flash回调执行。);
console.log(闪光这是Ajax的
操作执行完毕后必须执行。);
}
你认为这是为ajax2执行第一、执行第一ajax1
仔细想一想,你会找到答案的。
不!
现在,如何解决这个问题。如何确保ajax2完成。
当然,你可能会说,它将ajax1调用的回调方法ajax2方法背后的不容易,ajax2callback
我必须承认这是一个解决方案,但是如果它是一个非常老的项目,它已经做了好几年了,它调用复杂的,并且尽量避免
修改以前的底层方法。也许你可以简单地解决这个问题,以便修改
错误。您可能会
创建更多的错误…
有没有解决这个问题的好办法
当然,解决它很容易。但是
工作经验不足的人很少想到它,只能用以前的方法来解决问题,不管是37二十一。
我采用了一种相当愚蠢的方法,但仍然存在一些问题。我用setTimeout定时器执行一次,但问题必须是众所周知的。谁知道阿贾克斯会持续多久幸运的是,有一位伟大的神指引着我。
记住对数组进行
排序,并说这一点,也许你会好奇它与数组排序有什么关系。
代码
显示一切:
函数main(){
VaR的
温度= ajax2callback;
ajax2callback =函数(){
临时();
ajax1(数据,回调);
}
aa(数据);
ajax2callback =温度;
}
函数aa(缬氨酸){
这里是输入数据包的变化,当然,这里不写
ajax2(数据,ajax2callback);
}
功能ajax2callback(){
console.log((ajax2callback)Flash回调执行。);
console.log(闪光这是Ajax的操作执行完毕后必须执行。);
}
看不到,不是很有意思,没有修改方法的最低水平,只是修改main方法,排序排序时不象比较数组中的两个小时值,不管你是使用冒泡排序,还是快速排序,都不是
设置一个临时变量来存储值。当然,你在排序的时候不能设置临时变量。你可以只使用一个^算子进行分配的比例,甚至你可以懒到直接打电话给Arrays.sort()当然,制度,方法,这是可以做到的。
功能changesearchcontacttype(obj)
{
如果(!Obj)
{
返回;
}
VaR ContactType = obj.value;
无功origrendertemplate = rendertemplate;
rendertemplate =功能(数据)
{
origrendertemplate(数据);
ajaxanywhere.submitajax('setsearchcontacttype);
}
VaR结果= templatehelper.changesearchcontacttemplate(接触式、contactuiuid);
rendertemplate = origrendertemplate;
返回结果;
}