AJAX数据源协调处理思路

由于各种原因,有时候会对两个以上的AJAX数据源进行协调处理,遇到这种情况,该怎么办?

首先,将这些数据源定义为全局变量,在各自的AJAX回调函数中对相应的全局数据源变量进行赋值,然后在最终的公共协调函数中对用到的数据源进行判断。在判断过程中,如果这些全局变量没有被初始化,说明某些AJAX调用还未返回或者返回后还未完成对数据源的赋值。此时系统必须停止执行函数代码,等待某一时间间隔后,再次进入本函数,重新对数据源做判断(利用setTimeout重复对自己的调用),直到这些数据源全部被验证通过,再继续执行函数代码。另外要注意:这些数据源被处理完成后,一定要清空他们,以便为下次判断赋值情况做准备。

在刚刚完成的一个项目Demo中,自己就遇到了这种情况。由于当时协调的数据源只有2个,时间上也不宽裕,因此,本人没有深入分析,就直接采用了比较笨的办法:在各自的函数中添加对另一数据源(两数据源均被声明为全局变量)的判断:如果另一数据源没有赋值,则......;如果已经被赋值,则......。现在想来,这种做法只能说是有了一点协调处理的想法,思考方向上还欠深入:没有将各自的判断提炼出来,做进一步处理。

此次,参考其他人做法,将处理的思路记录下来,捋顺思路,以待后用。

【补充】

同事的办法是:添加一些公共变量,并添加一个公共的函数处理判断这些变量。如果变量全部被赋值,则继续,否则跳出。并在各个AJAX的回调函数中添加对此公共函数的调用。

我的另一思路:也可以将AJAX调用串行化,即:在一个AJAX的回调函数中添加对另一AJAX调用。

原文地址:https://www.cnblogs.com/jizhong/p/2267933.html