我有两个函数,例如,。runslider()和runslider1()。 runslider()在加载文档后运行,我需要在完成runslider()之后调用runslider1()。然后在runslider1()之后再次运行runlider()。这个过程应该像无限循环一样发生。有谁可以帮助我吗。 我试图让它们像回调一样。但那没用。
function runSlider(runslider1){
alert("run")
runSlider1(runSlider());
}
function runSlider1(runslider){
alert("run1");
runSlider(runSlider1());
}
答案 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