原型JavaScript Ajax FIFO队列
问题描述:
我正在编写一个小型的基于Web的即时消息客户端,它运行良好,但是我遇到了一些问题。原型JavaScript Ajax FIFO队列
该系统使用PHP和JavaScript编写,它使用每个页面上放置的身份验证ID,当发出ajax请求时,它必须包含此身份验证ID。这不是一个完美的系统,但我无法改变它。
的IM系统使用周期性执行人(Prototype库),有2个周期调用它使:
- 更新联系人列表,因为这并不经常更改它就会每隔30秒更新一次
- 检查新消息,现在这种情况会持续5秒。
的问题是:
定期执行进行呼叫更新联系人列表,使用认证ID,在PHP侧拿起该请求,检查认证ID,执行任务,返回新的列表JSON格式以及用于后续请求的新身份验证ID。
如果在第一个函数返回之前检查新消息(定时)或发送消息(未定时),则认证ID尚未更新。因此它使用与先前请求相同的认证ID。该身份验证ID被系统的PHP端拒绝。
我正在寻找一种将请求序列化为FIFO样式队列的方法,这意味着可以将所有发出的ajax请求(检查消息,检查联系人,发送消息)推送到队列中,并尽快执行先前的ajax调用已完成(100%完成并返回)
答
创建请求队列类并使用它来处理您的ajax请求可能是个好主意。我敢肯定,你可以通过google搜索找到已经取得的东西,但这里有一个我发现,应该为你工作:
http://positionabsolute.net/blog/2007/04/ajax-request-queue.php
你将不得不更换所有的Ajax调用使用该新功能,但修改类像这样应该可以解决你的问题。