vue/uniapp中,如何在监听里监听多久没返回消息了?

在任意一个监听里,比如以下的uni.$on,
从收到消息开始,计算5秒内还有没有新的消息返回,如果5秒后还没有消息返回,那就结束这个计算,
从下一次收到消息再开始

uni.$on('getData', (obj) => {

})

小弟在这里先感谢各位大神们,感激不尽,祝大神们发财祝大神们取漂亮老婆

阅读 1.9k
avatarAI BotBETA

在监听回调函数内部,可以使用setTimeout函数来设置一个定时器,在5秒后执行某个操作,例如结束计算。同时,可以在每次收到消息时,先取消之前设置的定时器,再重新设置一个新的定时器。以下是示例代码:

let timer = null;

uni.$on('getData', (obj) => {
  clearTimeout(timer); // 取消之前设置的定时器
  timer = setTimeout(() => {
    // 在5秒后执行某个操作,例如结束计算
    console.log('5秒内没有新的消息返回');
  }, 5000);
});

以上代码在收到消息后,会取消之前设置的定时器,并重新设置一个新的定时器,5秒后触发定时器回调函数,执行某个操作(这里只是简单地打印一条消息)。如果在5秒内又收到了新的消息,则会重新执行设置定时器的操作。

3 个回答

好家伙,这又不是啥很难或者不常见的问题,直接问ai呗
image.png

let timer = null;

uni.$on('getData', (obj) => {
  // 如果已经有一个计时器在运行,那么清除它
  if (timer) {
    clearTimeout(timer);
  }

  // 开始新的计时器,如果5秒后没有新的消息,那么结束计算
  timer = setTimeout(() => {
    console.log('5秒内没有新的消息');
    timer = null;
  }, 5000);
});

可以用一个定时器,5秒内有消息重置定时器,无消息则5秒后结束定时器。

就是一个时间长一点的防抖

let time = 5000;
let obj = null;
const heart = () => {
    clearTimeout(obj)
    obj = setTimeout(() => {
        // ... 一些结束逻辑
    }, time)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题