当前位置: 首页 > 知识库问答 >
问题:

在方法调用中进行延迟[重复]

沙海
2023-03-14

我有搜索栏(文本字段)组件,它会根据用户类型更新列表。问题是,对于用户输入的每个字符,列表都会更新,因此如果他们想写入Learn React,列表会更改11次!我需要做一些延迟函数(updateList)调用的事情,比如说让它每1秒调用一次,即使它在一秒钟内被调用了很多次。任何建议。

共有2个答案

戚正业
2023-03-14

我创建一个JSFIDLE来向您展示一个示例

https://jsfiddle.net/kmo61q89/

学分归大卫·沃尔什所有(https://davidwalsh.name/javascript-debounce-function)

将此解盎司函数添加到代码中:

function debounce(func, wait, immediate) {
  var timeout;

  return function executedFunction() {
    var context = this;
    var args = arguments;

    var later = function() {
      timeout = null;
      if (!immediate) func.apply(context, args);
    };

    var callNow = immediate && !timeout;

    clearTimeout(timeout);

    timeout = setTimeout(later, wait);

    if (callNow) func.apply(context, args);
  };
};

然后,在输入中添加事件侦听器:

var input = document.getElementById("myInput");

var searchFunction = debounce(function() {
  console.log('seach code here')
}, 250);

input.addEventListener('keyup', searchFunction);
单于俊智
2023-03-14

通过简单的方法,您可以做到这一点:

var debounceTimeout = null;

searchInput.on('change keyup', function(event){
  clearTimeout(debounceTimeout);
  debounceTimeout = setTimeout(searchEvents, 500);
});

你也可以通过很多方式来处理这个问题,比如用bool值设置一个变量,当成功时,让它为假,当搜索触发时,返回为真

 类似资料:
  • 问题内容: 我希望能够在指定的延迟后调用以下方法。在目标c中,有类似以下内容: android和java中的此方法是否等效?例如,我需要能够在5秒钟后调用一个方法。 问题答案: Kotlin Java

  • 我正在尝试用Java做一些事情,我需要在while循环中等待/延迟几秒钟。 我想构建一个step sequencer,我是Java新手。有什么建议吗?

  • 本文向大家介绍在 Swift (iOS)延迟后如何调用方法?,包括了在 Swift (iOS)延迟后如何调用方法?的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将看到如何使用Swift延迟方法调用。在这里,我们将看到如何以两种方式实现相同的目标, 所以我们开始吧 我们将在Playground中看到两个示例, 步骤1-打开Xcode→New Playground。 在第一种方法中,我们将使

  • 延迟调用一个函数,直到当前调用堆栈已经清除。 使用 setTimeout() ,超时时间为1ms,将新事件添加到浏览器事件队列,并允许渲染引擎完成其工作。使用展开 (...) 运算符为函数提供任意数量的参数。 const defer = (fn, ...args) => setTimeout(fn, 1, ...args); // Example A: defer(console.log, 'a

  • Go 语言中没有提供其它面向对象语言的析构函数,但是 Go 语言提供了 defer 语句用于实现其它面向对象语言析构函数的功能 defer 语句常用于 释放资源、解除锁定 以及 错误处理 等 例如C语言中我们申请了一块内存空间,那么不使用时我们就必须释放这块存储空间 例如C语言中我们打开了一个文件,那么我们不使用时就要关闭这个文件 例如C语言中我们打开了一个数据库, 那么我们不使用时就要关闭这个数

  • 问题内容: 如何在Python中进行时间延迟? 问题答案: 这是另一个示例,其中某件事大约每分钟运行一次: