如何在一个函数中创建setTimeOut并在另一个函数中销毁它?

neowenshun

即时通讯试图做类似谷歌文档。这是一个自动保存的系统/循环。闲置几秒钟后,我将保存一个文档(通过从类中调用save方法)。

如果在那几秒钟内有活动,那么我将计时器重置/延长几秒钟。该循环将一直持续到调用save方法为止,其中,我将中断循环并等待其他活动再次启动循环。

这是我想出的一些伪代码:

doc.on('mouse:up', (event) => {
        ... //<--- Initialize the timer on mouse:up event
        ... //<--- When time is up, execute the save method
    })

doc.on('mouse:down', (event) => {
        ... //<--- prolong timer initialized in the mouse:up event if it is available.
        }

但是,我认为这种方式是不可能的,因为我无法访问相同的初始化setTimeOut对象。是否有实现此目的的好方法?很想听听你们的消息。

亚当·亚瑟

有几种方法可以解决此问题。

方法:基本
缺点:低级,行为不是立即显而易见的。

const saveDelayMs = 1000;
let timeoutId;

doc.on('mouse:up', (event) => {
   timeoutId = setTimeout(save, saveDelayMs);
});

doc.on('mouse:down', (event) => {
   clearTimeout(timeoutId);
   timeoutId = setTimeout(save, saveDelayMs);
}

方法:消除抽象
优点:更高级别,代码更易读

// Trigger 1000ms after last call
const debouncedSave = debounce(save, 1000);

doc.on('mouse:up', (event) => {
   debouncedSave();
});

doc.on('mouse:down', (event) => {
   debouncedSave();
});

function debounce(fn, debounceDelayMs) {
   let timeoutId;
  
   return () => {
      clearTimeout(timeoutId);
      timeoutId = setTimeout(fn, debounceDelayMs);
   };
});

Lodash提供了一个反跳功能,建议您创建自己的一个功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在另一个函数中使用一个函数并在Python中对其进行操作?

如何在一个函数中设置全局变量并使另一个函数访问它?

如何在Python中从另一个函数调用一个函数中的一个函数?

如何在JavaScript中的另一个函数中调用一个函数

打开文件并在另一个函数中创建NewReader后如何关闭文件?

如何创建一个遍历PostgreSQL中另一个函数的函数?

在一个文件中创建一个函数并从另一个文件访问它 - Python

如何在Javascript中创建一个继承另一个函数的属性和方法的函数?

我将如何在 Python 中创建另一个 int() 函数以便我理解它?

如何在PostgreSQL中创建另一个函数的别名的新函数?

Python如何在另一个函数中模拟一个函数

如何在另一个函数nodejs中模拟一个函数

如何在python中的另一个函数中使用一个函数

如何在另一个函数中的一个函数中使用值

如何在另一个函数中调用一个函数的输出?

如何在另一个函数中调用一个reduce函数

如何在Angular的另一个函数中调用一个函数

如何在另一个函数中返回一个函数

Python:如何在另一个函数中包含一个函数?

如何在另一个函数中调用一个函数

在函数中创建数组,并在另一个函数中使用它

如何在一个类中的另一个函数中更新变量?

创建一个接口并在另一个包中实现它

如何在一个组件的另一个函数中添加一个类的函数?

如何在 Selenium 中创建一个将从另一个类调用的 driver.get 函数?

如何在Java中从另一个调用一个构造函数?

如何在烧瓶中调用一个函数到另一个

如何在另一个python函数中执行一个python文件?

如何在另一个函数中创建sender.tag UIButton?