Javascript 等待变量等于

Javascript 等待变量等于,javascript,settimeout,Javascript,Settimeout,我正在尝试使用javascript检查变量是否等于1 myvalue=1; 函数检查(){ 如果(myvalue==1){ 返回setTimeout(检查,1000); } 警报(“值已设置”); } 检查() 使用设置超时(检查,1000)只调用函数一次。那不是你想要的 您要查找的是setInterval,它每n毫秒执行一次函数 看看下面的示例,它使用setInterval等待值为1,然后在执行后清除setInterval实例 运行以下代码段时请等待4秒钟: //首先-将值设置为0 myv

我正在尝试使用javascript检查变量是否等于1

myvalue=1;
函数检查(){
如果(myvalue==1){
返回setTimeout(检查,1000);
}
警报(“值已设置”);
}
检查()
使用
设置超时(检查,1000)只调用函数一次。那不是你想要的

您要查找的是
setInterval
,它每n毫秒执行一次函数

看看下面的示例,它使用
setInterval
等待值为1,然后在执行后清除
setInterval
实例

运行以下代码段时请等待4秒钟:

//首先-将值设置为0
myvalue=0;
//这个变量将保存setInterval的实例,因此我们可以稍后清除它
var区间;
函数检查(){
如果(myvalue==1){
警报(“值已设置”);
//我们不再需要间隔检查函数,
//clearInterval将停止其定期执行。
间隔时间;
}
}
//创建check函数interval的实例
间隔=设置间隔(检查,1000);
//4秒后将该值更新为1

setTimeout(函数(){myvalue=1},4000)不清楚,你想要什么?您正在调用同一个函数,并且每次都在
if
循环中调用它。那么?您最好听一个变量更改事件,比如在这个问题中:您在这里不显示任何jQuery代码,也不显示任何更改
myvalue
的值的代码,您想实现什么?您可以使用异步调用。为什么超时?它不会返回“setTimeout函数的实例”。它返回它的返回值。原始代码也应该可以工作,问题很可能是该值从未设置。它仍然是错误的。在第一次超时时,将调用check
,并启动下一次
setTimeout
。尽管
return
关键字是不必要的,但总体行为与基于setInterval的行为并无不同。好吧,我的眼睛不好。如果检查是
if(myvalue!=1)
,OPs代码就会工作,这是我第一次看到的。然后,一个同步setTimeout循环将启动,其行为类似于基于setInterval的解决方案。我只是想指出setInterval是不必要的,setTimeout也可以做同样的事情(如果使用得当)。