Javascript 等待函数完成(使用setInterval)并运行下一个函数
第一次使用setInterval完成后,如何运行下一个函数 例如:Javascript 等待函数完成(使用setInterval)并运行下一个函数,javascript,jquery,Javascript,Jquery,第一次使用setInterval完成后,如何运行下一个函数 例如: step1(); step2(); setInterval(step1, 1000).done(function() { setInterval(step2, 1000).done( /* next step */); }); 请帮我解决问题 如果要在完成时链接函数,可以使用回调函数 例如: 第一个函数检查是否使用了回调,然后运行它。如果没有回调函数,则什么也不会发生。您可以通过这种方式链接函数。 您还可以使用匿名
step1();
step2();
setInterval(step1, 1000).done(function() {
setInterval(step2, 1000).done( /* next step */);
});
请帮我解决问题 如果要在完成时链接函数,可以使用回调函数 例如: 第一个函数检查是否使用了回调,然后运行它。如果没有回调函数,则什么也不会发生。您可以通过这种方式链接函数。 您还可以使用匿名函数
first(function () {
console.log('This function that will run after the first one);
});
如果使用setTimeout(),则无法确定上一个函数是否已完成。更好的方法是使用承诺。我希望我正确理解了你的问题。祝你好运 首先,setInterval本身无法完成,如果您不使用clearInterval清除它,它将无限激发 但是,如果您的函数中有一些异步操作,您需要等待它,然后调用另一个函数,那么您可以像建议的那样提示它
function step1() {
var deferred = $.Deferred();
setTimeout(function () {
alert('I am step 1');
deferred.resolve();
}, 1000);
return deferred.promise();
}
function step2() {
alert('I am step 2');
}
step1().done(step2);
您可以使用一个简单的标志来实现这样的目标。请参见下面的示例:
var flag = true;
function step1() {
console.log('title');
}
function step2() {
console.log('subtitle');
}
function wrapper() {
if(flag) {
step1();
} else {
step2();
}
flag = !flag;
}
setInterval(wrapper, 30000);
是否确定
setInterval()
或您的意思是setTimeout()
promisify
您的函数是否重复,请不要依赖setInterval
或setTimeout
var flag = true;
function step1() {
console.log('title');
}
function step2() {
console.log('subtitle');
}
function wrapper() {
if(flag) {
step1();
} else {
step2();
}
flag = !flag;
}
setInterval(wrapper, 30000);