javascript。继续测试直到正确

javascript。继续测试直到正确,javascript,Javascript,我希望能够不断地测试一些东西,直到它成为现实。 所以每次它都是假的,if语句再次被测试 我试过: var repeat_until = 0; while(repeat_until == 0) { if(a condition) { repeat_until = 1; } } 但是它当然不起作用了,有什么建议吗?因为常规Javascript是单线程的,如果你像这样处于一个紧密的循环中,没有其他Javascript可以运行,因此没有其他Javascript可以更改您

我希望能够不断地测试一些东西,直到它成为现实。 所以每次它都是假的,if语句再次被测试

我试过:

var repeat_until = 0;
while(repeat_until == 0) {
    if(a condition) {
        repeat_until = 1;
    }
}

但是它当然不起作用了,有什么建议吗?

因为常规Javascript是单线程的,如果你像这样处于一个紧密的循环中,没有其他Javascript可以运行,因此没有其他Javascript可以更改您的
repeat_,直到
变量或影响您的条件,因此
while
循环变成无限循环,因为没有其他代码可以运行来创建您等待的条件

如果您准确地解释了您正在等待的条件是什么,那么我们可能会提供一种更好的方法来帮助您在满足该条件时运行一些代码。您可能必须使用
setInterval()
进行轮询,或者可能会收到您可以使用的某些事件的直接通知。但是,在满足条件时运行某些代码的正确和最佳方法完全取决于条件是什么以及控制条件更改的因素

例如,这里有一个每秒轮询一次的解决方案,允许其他代码有机会运行:

var interval = setInterval(function() {
    if (a condition) {
         clearInterval(interval);
         // do your other work here
    }
}, 1000);

取决于条件是什么。下面是一个工作示例:


我不建议在一毫秒内执行大约10000条指令。因此我将给出一个
setInterval
而不是
while
循环。这里给出一个while循环对于CPU周期来说,带宽代价太高,因为它是单线程的。看看这个:

$(函数(){
setInterval(函数(){
$(“#控制台”).prepend(测试:“+($(“输入”).is(“:checked”))+”

”; }, 1000); });
*{font-family:'Segoe-UI';}
p{margin:0 0 5px;}

以下是一个示例


什么是“条件”?它是如何变化的?什么不起作用?为什么不起作用?是因为没有任何东西在改变条件的状态吗?而且,您的代码在逻辑上与
while(!(条件))相同条件工作正常。。。。谢谢!问题是浏览器在尝试运行脚本时冻结。我没想到让它等待会起那个作用。如果这个答案对你有用,你介意接受吗?库玛我不得不等,它不让我这么做
var repeat_until = 0;
var temp = 0;
while(repeat_until == 0) {
    if(temp >= 10) {
        repeat_until = 1;
    }
    temp += 1;
}
function change(){
    var value = false;
    var a = 0;
    while(value == false ) {
        if(a==4) {
            value = true;
        } else {
           a++;
        }
    }
}