等到功能完成

时间:2017-08-14 09:34:14

标签: javascript

在另一个线程的帮助之后,我现在有一个等待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,并且可以看到所有内容都被立即触发。

如何在不使用超时的情况下让它等待?

1 个答案:

答案 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");
});