JavaScript SetInterval() 队列

JavaScript SetInterval() Queue

是否可以在特定时间用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');

但目前它在 10000 毫秒内调用了两个函数;

如果我没看错,您想每五秒获取一次提要,并在 facebook 和 twitter 之间交替。如果是这样,使用单个函数:

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

currently its calling two functions on 10000ms;

那是因为您的原始代码每 5000 毫秒安排 get_feed('facebook') 到 运行,每 10000 毫秒安排 get_feed('twitter')。所以在 5000 毫秒之后,它执行 facebook 一个,然后在另一个 5000 毫秒(总共 10000 毫秒)之后,它同时执行它们,然后 5000 毫秒之后再次执行 facebook,然后 5000 毫秒(总共 20000 毫秒),它们都...

使用 setTimeout

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

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

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

尝试

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

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

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

示例:

var p = document.getElementById("text");

var a = setInterval(function(){
    p.innerText = "facebook";
  }, 5000);

var a = setInterval(function(){
    p.innerText = "twitter";
  }, 10000);
<p id="text"></p>