相互调用两个javascript函数

时间:2017-08-15 17:21:37

标签: javascript jquery

我有两个函数,例如,。runslider()和runslider1()。 runslider()在加载文档后运行,我需要在完成runslider()之后调用runslider1()。然后在runslider1()之后再次运行runlider()。这个过程应该像无限循环一样发生。有谁可以帮助我吗。 我试图让它们像回调一样。但那没用。

    function runSlider(runslider1){
        alert("run")
        runSlider1(runSlider());
    }

    function runSlider1(runslider){
        alert("run1");
        runSlider(runSlider1());
    }

5 个答案:

答案 0 :(得分:1)

如果您希望一次又一次地调用您的函数,请尝试使用setInterval



function runSlider(){
    alert("run");
    runSlider1();
}
function runSlider1(){
    alert("run1");
}
setInterval(runSlider, 100);




这将导致每100ms重复调用这两个函数。这似乎是你正在寻找的行为。

答案 1 :(得分:0)

上面的评论是正确的 - 你将导致堆栈溢出。

不知道你为什么需要这个,但我为你清理了你的代码:

function runSlider() {
    alert('run');
    runSlider1();
}

function runSlider1() {
    alert('run1');
    runSlider();
}

答案 2 :(得分:0)

您可以像这样创建无限循环,只需要调用一个函数。

var runSlider = function() {
  console.log("run")
  runSlider1()
}

var runSlider1 = function() {
  console.log("run1");

  setTimeout(function() {
    runSlider()
  }, 1000)
}

runSlider()

答案 3 :(得分:0)

另一种解决方案是:

function runSlider() {
    console.log("run");
    runSlider1();
    setTimeout(runSlider1(), 1000) // Calls runSlider1() after 1 second(1000 millisecond). You can change it.
}

function runSlider1() {
    console.log("run1");
    setTimeout(runSlider(), 1000) // Calls runSlider1() after 1 second(1000 millisecond).
}

runSlider(); // Starts the cycle

答案 4 :(得分:0)

var maxCalls = 0;

function run1(cb) {
  alert('run1');
  if (maxCalls++ < 5) { //Added this to avoid an infinite loop
    cb(run1); //We want the function run after cb to be this one
  }
}

function run2(cb) {
  alert('run2');
  if (maxCalls++ < 5) {
    cb(run2);
  }
}

这是从另一个函数调用一个函数的方法。如果创建无限循环,则会冻结浏览器。如果你希望这两个函数不断运行,那么最好用setInterval调用来释放执行。

var runFunc = 0;

var run1 = function() {
  alert('run1');
};

var run2 = function() {
  alert('run2');
};

var run = function() {
  !(++runFunc) ? run2 : run1; //Alternate between calling each function
}

var stopRunning = function() { //Call this to stop the functions running
  clearInterval(runInterval);
};

var runInterval = setInterval(run, 1000); //Calls the function every second