首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置事件侦听器函数的超时

设置事件侦听器函数的超时
EN

Stack Overflow用户
提问于 2017-04-24 09:05:10
回答 3查看 19.1K关注 0票数 5

我有一个事件侦听器

代码语言:javascript
复制
elem.addEventListener('evt', fooFn(){alert("OK")});

我想让这个事件侦听器超时。因此,假设它在3秒内没有收到任何名为'evt‘的事件,我希望有一个通知它超时了。

我尝试使用setTimeout函数,但到目前为止,我还没有设法将addEventListener回调函数(fooFn)的内部变量传递给setTimeout函数。

对我怎么能做到有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-24 09:12:46

代码语言:javascript
复制
var evtFired = false;
setTimeout(function() {
    if (!evtFired) {
      // show notification that evt has not been fired
    }
}, 3000);

function fooFn() {
    evtFired = true;
    alert('OK');
}

elem.addEventListener('evt', fooFn);

也许这会有效,只需将“内部变量”放置在外部范围内即可。

票数 6
EN

Stack Overflow用户

发布于 2017-04-24 09:19:17

尝试以下解决方案:

代码语言:javascript
复制
let btn = document.getElementById('btn');

let timeOut = setTimeout(() => {
  btn.removeEventListener('click', handler);
  alert('no event on btn');
}, 3000);

let handler = x => {
  clearTimeout(timeOut);
  alert('click on btn')
};

btn.addEventListener('click', handler);
代码语言:javascript
复制
<button id="btn">click me within 3 sec</button>

票数 0
EN

Stack Overflow用户

发布于 2021-05-02 16:13:37

尝试这样做(在我看来,这是处理程序和内存消耗最少的方法):

代码语言:javascript
复制
  var timeMEM = Math.trunc(Date.now()/1000)

  'target'.addEventListener('event', function(){
     if(data < Math.trunc(Date.now()/1000)){

        // do something in one second periods

        timeMEM = Math.trunc(Date.now()/1000);
     }
  });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43583894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档