0

不太确定如何提出问题,但这是我的问题。

我有这样的 AJAX 轮询请求

function poll(){
    $.ajax({
        type: "GET",
        url: "http://localhost:8080/?Request=PollingData",
        success: function(data, textStatus, request){
            var event = data.split("}");
        }
    });
}

setInterval(poll, 500);

我可能会在一次投票中获得多个事件,例如 {event=event1&data=aaa}{event=event2&data=bbb}。

我的目标是获取事件,并且在某些地方我想放置一个将永远循环以处理事件的代码。我想将我在投票中收到的任何事件移动到某个地方,以便在将每个事件传递给特定的事件处理程序之前循环每个事件。

这是因为当我每半秒进行一次轮询时,eventHandler 中的进程可能还没有完成。因此,如果我收到一个新事件,我想推送所有新事件以处理现有事件。假设我正在循环 event1 和 event2,它需要 2 秒(超过半秒),然后在下一次轮询期间出现新事件,我想附加事件以便现在我可以循环 event1 event2 event3事件4。如果您不太了解要求,请告诉我。

我在如何做和应该放什么方面遇到问题,因为我只是将 JQuery 用于基本的东西,并且在这方面没有很深的知识。非常感谢任何帮助。谢谢你。

4

1 回答 1

0

如果您只想确保轮询仅在事件处理完成后发生,您可以将轮询事件设置为在事件处理完成后才发生,而不是间隔,如下所示:

function poll(){
    $.ajax({
        type: "GET",
        url: "http://localhost:8080/?Request=PollingData",
        success: function(data, textStatus, request){
            var event = data.split("}");
            /* .. processing code */
            setTimeout(poll, 500);
        }
    });
}
于 2013-08-22T10:52:50.217 回答