如果功能,我怎么能运行其余的代码

问题描述 投票:0回答:3

正如标题所说,我怎样才能运行其余的代码(在主函数之下),只有当某些条件完成时?例如:

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");
javascript jquery
3个回答
2
投票

你应该使用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");
})

0
投票

您可以将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");
}

0
投票

你在foosetInterval混淆。对foo的调用实际上是在控制台日志之前“完成”。我认为你可能意味着“它应该在setInterval中的函数条件满足后显示。”

在这种情况下,有几种方法可以做到这一点,最简单的可能只是包装你感兴趣的功能,正如void在他的回答中所表明的那样。另一种方法可能是使用promises或其他类型的异步流。

© www.soinside.com 2019 - 2024. All rights reserved.