Setinterval - 一次单击,然后在 2 秒后再次单击。运行一次。无循环

时间:2021-02-21 00:16:08

标签: javascript settimeout setinterval

我查看了许多关于 setInterval 的帖子,但没有一个提供我正在寻找的答案或我正在努力实现的目标。

我正在寻找一个只需点击 2 次的 setInterval 函数。第一次点击与第二次点击相隔 2 秒。它只运行一次我目前拥有的是一种使用两个函数的解决方法,它有效..但我宁愿将它们放在一个函数中而不是两个函数中。

第一次点击是在一秒内立即运行(1000)它关闭打开的模式。然后下一次单击是在 2 秒(2000)后删除一个克隆。以下是我目前在 $each 中使用的内容。感谢您的帮助。

$.each(deleteCard, function( i, person ) {
    setTimeout(function() {  
        $("#"+person.id).find('.close-modal').click(); 
    }, 1000);

    setTimeout(function() { 
        $("#"+person.id).find('.card').remove(); 
    }, 2000);  
}); 

1 个答案:

答案 0 :(得分:1)

我认为 setInterval 在这里没有帮助。只重复两次是一个糟糕的选择(您的原始代码也有不规则延迟,setInterval 做得不好)。

我会使用 Promise 并编写一个等待函数作为通用实用程序,您可以将其隐藏在某个帮助文件中:

const wait = ms => new Promise(resolve => setTimeout(resolve, ms));

$.each(deleteCard, async function (i, person) {
  await wait(1000);
  $("#" + person.id).find('.close-modal').click();
  await wait(1000);
  $("#" + person.id).find('.card').remove();
});
相关问题