当前位置: 首页 > 面试题库 >

如何正确地反跳Ajax请求

沈良策
2023-03-14
问题内容

我有一个复选框,可以切换某些行为,但是如果有人连续点击100次,我不想向服务器端发送100个请求。

到目前为止,这就是我所准备的(找到以下代码片段):

deBouncer = function($,cf,of, interval){
    var debounce = function (func, threshold, execAsap) {
        var timeout;
        return function debounced () {
          var obj = this, args = arguments;
          function delayed () {
            if (!execAsap)
                func.apply(obj, args);
            timeout = null;
          }
          if (timeout)
            clearTimeout(timeout);  
          else if (execAsap)
            func.apply(obj, args);
          timeout = setTimeout(delayed, threshold || interval);
        }
    }
    jQuery.fn[cf] = function(fn){  return fn ? this.bind(of, debounce(fn)) : this.trigger(cf); };
  };

在我的文档准备功能中:

deBouncer(jQuery,'smartoggle', 'click', 1500);

然后事件本身:

$(window).smartoggle(function(e){
  MyToggleFunction();
});

这是因为我将1500毫秒作为去抖动周期,所以如果您在1500毫秒内单击n次,它将仅向服务器发送最新状态。

但是,使用它会有副作用,现在我的其他事件的click事件被搞砸了。我在这里做错什么了吗?有更好的防抖方法吗?


问题答案:

不知道是否可以有“适当的”方法来执行此操作。

话虽如此,下划线具有这样的实用程序,可以创建功能的反跳版本…

var MyToggleDebounced = _.debounce(MyToggleFunction, 1500);

然后MyToggleDebounced在点击处理程序中使用。

链接到Underscorejs上的反跳文档

看看带注释的源代码如何做到这一点。



 类似资料:
  • 对于类中的方法,文档是这样说的: 取消此对话框,将其从屏幕上移除。可以从任何线程安全地调用此方法。请注意,当对话框被取消时,不应重写此方法来进行清理,而应在中实现此方法。 在我的代码中,我所做的就是调用来删除它。但是我没有做其他任何事情,甚至没有使用。因此,我问的是如何正确地删除以避免任何内存泄漏等。

  • 问题内容: 我想针对AJAX请求与常规请求以不同的方式处理错误。 如何在Struts2操作中确定请求是否为AJAX? 问题答案: 您应该检查请求标头是否存在并且等于。 请注意,并非所有AJAX请求都具有此标头,例如,请求不发送该标头。如果您是使用(或使用任何其他新的AJAX框架)生成AJAX调用,则该文件就在那里。 您可以使用… 检查它是否存在,例如,当您对Stack Overflow投票时;)

  • 很抱歉,如果这是我忽略的非常简单的事情,但我正在尝试制作一个组件,它基本上只将某些react路由器路由限制为具有活动令牌的用户。 看起来(正如预期的那样)只有“console.log(result)”执行了挂起的promise,但在最终结果中,我试图将一些逻辑编码到从后端给出的响应中(true或false),然后这些逻辑应该发送到privaterout组件,以确定是否应该将用户发送回登录,等等。。

  • 问题内容: 我对ObjectMapper的工作方式和应用程序的一般使用感到满意。我想了解的是实现ObjectMapper的最佳方法,以确保其被重用并且不会在应用程序内创建不必要的实例? 我的想法是,可以在Utils类中声明ObjectMapper,如下所示: 然后,我可以在不同的地方使用诸如以下代码来引用: 我遇到了另一个问题(我应该将杰克逊的ObjectMapper声明为静态字段吗?),这促使我

  • 有一个非正式的百度百科APIhttp://baike.baidu.com/api/openapi/BaikeLemmaCardApi?appid=379020&bk_key=uzi 对该API发起请求时,有一定概率返回 errno: 2错误信息,该错误表示什么意思?如何避免返回该错误?

  • 我发现其他人也有同样的问题,他们的问题通过在InputStreamReader构造函数中指定UTF-8来解决: 以UTF-8形式读取InputStream 这对我不起作用,我也不知道为什么。无论我尝试什么,我总是得到转义的unicode值(斜杠-U+十六进制),而不是实际的语言字符。我在这里做错了什么?提前道谢! 请注意:这不是字体问题。我之所以知道这一点,是因为如果我对同一个文件使用Resour