我希望我的程序在每次执行之间执行延迟。现在我有了这个:
function function0() {
setTimeout(function1, 3000);
setTimeout(function2, 3000);
setTimeout(function0, 3000);
}
每次执行function0之间都有延迟,但在function1和funtion2之间没有延迟,function2在function1之后立即运行。我该如何解决这个问题?
答案 0 :(得分:2)
这不优雅,但它应该有效..在功能2结束时,功能1将在3秒后执行,功能1和循环功能之间相同。
function function0() {
setTimeout(function() {
// <my_function2>
setTimeout(function() {
// <my_function1>
setTimeout(function0, 3000);
}, 3000);
}, 3000);
}
答案 1 :(得分:0)
所有功能在3秒后执行。你的意思是这样做:
function function0() {
setTimeout(function1, 3000);
setTimeout(function2, 6000);
setTimeout(function0, 9000);
}
答案 2 :(得分:0)
setTimeout
是非阻塞的,因此所有这三个函数都将在3秒后运行。把它改成这样的东西:
function function0() {
setTimeout(function1, 3000);
setTimeout(function2, 6000);
setTimeout(function0, 9000);
}
将使他们每人分开3秒。如果您不想对此进行硬编码,可以使用setInterval
,增加函数名称(因为您的函数有数字来区分它们),然后在x次迭代后停止:
var i = 0,
int = setInterval(function () {
// Function logic
i++;
if (i === 3) {
clearInterval(int);
}
}, 1000);
答案 3 :(得分:0)
或者你可以这样做:
function function0() {
setTimeout(function1, 3000);
}
function function1() {
/*
Your code here
*/
setTimeout(function2, 3000);
}
function function2() {
/*
Your code here
*/
setTimeout(function3, 3000);
}
function function3() {
/*
Your code here
*/
}