正如标题所说,我怎样才能运行其余的代码(在主函数之下),只有当某些条件完成时?例如:
function foo() {
count = 0;
var interval = setInterval(function() {
count++;
if (count == 10) {
clearInterval(interval);
console.log('Done');
}
}, 1000);
}
foo();
console.log("It should display after Foo() is done");
你应该使用promise
..然后你的代码将是这样的
function foo() {
return new Promise(function(resolve , reject){
count = 0;
var interval = setInterval(function() {
count++;
if (count == 10) {
clearInterval(interval);
console.log('Done');
resolve();
}
}, 1000);
})
}
foo().then(function(){
console.log("It will be displayed after Foo() is done");
})
您可以将console.log
包装在函数中,然后在满足条件后调用该函数。
在下面的解决方案中,console.log
将在10秒后触发。
function foo() {
count = 0;
var interval = setInterval(function() {
count++;
if (count == 10) {
clearInterval(interval);
console.log('Done');
execAfterFoo(); // Will execute after the condition is met
}
}, 1000);
}
foo();
function execAfterFoo() {
console.log("It should display after Foo() is done");
}
你在foo
与setInterval
混淆。对foo
的调用实际上是在控制台日志之前“完成”。我认为你可能意味着“它应该在setInterval
中的函数条件满足后显示。”
在这种情况下,有几种方法可以做到这一点,最简单的可能只是包装你感兴趣的功能,正如void在他的回答中所表明的那样。另一种方法可能是使用promises或其他类型的异步流。