在另一个线程的帮助之后,我现在有一个等待3000的工作代码,然后将变量设置为1.然后循环检查每1000个变量,直到该变量发生变化,然后发出警报
var myvalue;
setTimeout(function() {
myvalue = 1;
}, 3000);
function check() {
if (myvalue == 1) {
alert("Value Is Set");
} else {
setTimeout(check, 1000);
}
}
alert("debug1");
check();
alert("debug2");

我现在的问题是它不会等到check()
功能完成后再继续。我添加了一些调试alert
,并且可以看到所有内容都被立即触发。
如何在不使用超时的情况下让它等待?
答案 0 :(得分:4)
您可以传递回调并在功能完成后调用它。
像这样:
var myvalue;
setTimeout(function() {
myvalue = 1;
}, 3000);
function check(callback) {
if (myvalue == 1) {
alert("Value Is Set");
callback && callback();
} else {
setTimeout(check, 1000, callback);
}
}
alert("debug1");
check(function() {
alert("debug2");
});