setTimeout在try / catch中不起作用

时间:2018-03-08 14:52:14

标签: javascript node.js angular ionic-framework

我正在等待提供商更新this.myprovider.SomeVarIsNotUndefined。我不能使用Promise让我的脚本等待,所以我想出了这个,但它似乎只运行一次。因此,setTimeout() = catch this.myprovider.SomeVarIsNotUndefined区域undefined并未重新触发,即使console.log(err)正在触发。

someFunction(){

  try {

      if(this.myprovider.SomeVarIsNotUndefined){
        //...
         console.log("works");
      }
  }
  catch(err) {

    //if error then re-run after 0.5 seconds
    setTimeout(() => {  this.someFunction(); }, 500);
     console.log(err);

  }

}

//run func for the first time
this.someFunction();

1 个答案:

答案 0 :(得分:0)

下面的代码完全正常,第一次变量未定义,程序流程转到catch块。然后在catch块中,我定义了变量,然后设置超时函数重新触发函数并发出console.log - "工作"

<script>

function someFunction(){
  try {

      if(SomeVarIsNotUndefined){
        //...
         console.log("works");
      }
  }
  catch(err) {

    //if error then re-run after 0.5 seconds
    setTimeout(() => {  SomeVarIsNotUndefined = 1; this.someFunction(); }, 500);
     console.log(err);

  }

}

//run func for the first time
this.someFunction();
</script>

https://www.w3schools.com/code/tryit.asp?filename=FP6TDP0ESYVW