JavaScript SetInterval() 队列

标签 javascript jquery setinterval

是否可以在特定时间使用 SetInterval() 调用函数,但仅执行该函数一次。

function get_feed(social) {
  $.ajax({})
}

setInterval(function(){
  get_feed('facebook');
},5000);

setInterval(function(){
  get_feed('twitter');
},10000);

我希望结果在指定时间仅被调用一次:

on 5000ms: get_feed('facebook');
on 10000ms: get_feed('twitter');

但目前它在 10000ms 上调用两个函数;

最佳答案

如果我没理解错的话,您希望每五秒获取一次提要,并在 Facebook 和 Twitter 之间轮流切换。如果是这样,请使用单个函数:

var feed = "facebook";
setInterval(function() {
    get_feed(feed);
    feed = feed === "facebook" ? "twitter" : "facebook";
}, 5000);

currently its calling two functions on 10000ms;

这是因为您的原始代码安排 get_feed('facebook') 每 5000 毫秒运行一次,get_feed('twitter') 每 10000 毫秒运行一次。因此,5000 毫秒后,它执行 facebook 操作,然后再经过 5000 毫秒(总共 10000 毫秒),它执行这两个操作,然后 5000 毫秒后再次执行 facebook 操作,然后 5000 毫秒(总共 20000 毫秒),两者都执行...

关于JavaScript SetInterval() 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38012993/

相关文章:

javascript - Puppeteer 查询选择器 - 如何获得第二个匹配项

javascript - React JSX 组件。无法通过流量

javascript - setTimeout 和 setInterval 的第二个参数是必需的吗?如果不是,默认值是多少?

javascript - 删除字符串javascript中出现的n个感叹号

javascript - 在 angularjs 中发布响应重新加载数据后

javascript - Bootstrap : make expand/Collapsible table instead of div

javascript - 是否可以在不使用html5的情况下在IE8和其他主流浏览器中实现模糊效果和运动模糊效果?

javascript - jQuery : How to prevent insertion into input field after sum of multiple input fields has been reached?

javascript - setInterval() 只运行一次函数

jquery - setInterval 和 setTimeout