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 - 访问关联数组

javascript - Angular ngMessages - 访问多个表单值

javascript - Ti.API.info 和 console.log 之间的区别

Javascript .style 更改影响两个元素,尽管它们的值记录不同

jquery - 如何使我的 'click' 功能与 iOS 一起使用

javascript - jQuery 获取多个属性

javascript - 不使用 jquery,如何循环显示图像以制作简单的幻灯片

javascript - 创建滚动标记以显示网页中的重要位置

javascript - 服务器上的 JS 和 CSS 文件链接问题 - Slick Slider

javascript - 在另一个 html 元素上具有悬停效果的响应式图像叠加