3

我目前正在寻找限制对函数的请求数量的最佳解决方案。

例子:

function CheckData() {
    if (d == "newdata") {
        GetData(2);
    }
}

function GetData(getcheck) {
    // Ajax Request here
}

我正在寻找的解决方案是一种方法,当 CheckData 调用 GetData 时,有办法限制它调用 GetData 的频率,或者如果突然有大量请求通过,有没有办法让它说只得到最后一个请求?所以基本上它可以检查请求的频率,以便您可以说它现在停止了发送最后一个请求的大量请求吗?

我只是在寻找一种方法来限制 CheckData 调用 GetData 的频率,但最好的方法是尽量减少等待。

我查看了一些解决方案,但不确定如何将其应用于这种情况。

4

1 回答 1

4

选项 1
限制函数可以调用次数的通常模式是:

节流去抖动

(你也可以在 underscore.js 中看到类似的实现)

选项 2
尽管对于 ajax,您可以创建一个队列系统来限制同一资源上的一个请求。

选项 3
或者,如果您的函数总是获得相同的资源,只需检查请求是否结束:

var GetData = (function() {
    var running = false;
    return function(getcheck) {
        // exit if ajax is running
        if ( running ) { return; }

        running = true;

        $.ajax(/* go */)
            .done(function() {
                /* do stuff with data */

                // call it over
                running = false;
            });
    }
}());

function CheckData() {
    if (d == "newdata") {
        GetData(2);
    }
}
于 2012-11-02T01:18:35.037 回答