我正在等待提供商更新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();
答案 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