在我的 jQuery 网络应用程序中,我经常使用事件。
我对服务器执行 ajax 客户端请求(名称为“comm”)的组件有一个队列。
这个队列类似于 Backbone.js 集合。
因此,每次我将一个新的请求对象放入“comm”的集合中时,comm 对象都会收到一个“add”事件,并且“comm”的“worker”方法会查找当前是否有正在进行的请求。如果没有人,worker 方法处理请求,最后,当一切正常时,触发请求对象上的“完成”事件。
在这个通信组件中,一次只能有一个请求。如果我将一个请求对象添加到“comm”并且“添加”事件被触发并且工作方法看到已经有一个请求,那么什么也不会发生。
我的问题是:在这种情况下,处理与“事件基础结构”相关的未处理请求对象的最佳方法是什么?
到目前为止,我有两种不同的方法:
1) 我可以执行以下操作:如果我正在进行的请求已完成,worker 方法可以检查集合中是否有未处理的请求对象并对其进行处理。这很简单,不涉及任何事件。
2) 或者不同的东西:如果 worker 方法由于“添加”事件而启动并且看到,已经有一个正在进行的请求,我可以实现类似的东西:“我不能充分响应这个添加事件,我把你放回去。请在 200 毫秒后再次触发你自己,也许那时我有时间。”
也许有人已经遇到过类似的问题并且有很好的解决方案?
最佳答案
我认为解决这个问题的一个好方法是实现一个在队列中触发的“下一个”事件。每次触发“完成”事件时,它应该触发队列中的下一个事件,然后查看是否有任何未处理的请求,如果有,则根据您的逻辑选择一个(我假设 FIFO)
关于javascript - 集合/数组中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14748616/