javascript - 如何限制对函数的调用?

标签 javascript jquery

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

例子:

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

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

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

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

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

最佳答案

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

throttledebounce

(你也可以在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);
    }
}

关于javascript - 如何限制对函数的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13187908/

相关文章:

javascript - iOS Safari 上的全高图像标题问题

javascript - 使用 jquery 切换按钮

javascript - 使用 JQuery 选择基于 dynamicID 的元素

javascript - 隐藏/显示按钮无法正常工作

javascript - 当 IMAGE 被删除时,将 div 中的值设置为隐藏输入

javascript - jQuery 在悬停时显示并输入 div

javascript - 多个 .add 和 .eq 的可读性更好

javascript - 使用 jQuery/javascript 显示服务器创建的图像

javascript - document.referrer.indexOf() 在 IE8 中失效

javascript - 类型错误 : Undefined is not a function in simple if statement