等到flag = true

我有这样的javascript函数:


function myFunction(number) {


    var x=number;

    ...

    ... more initializations

    //here need to wait until flag==true

    while(flag==false)

    {}


    ...

    ... do something


}

问题是javascript卡在了一段时间,卡住了我的程序。所以我的问题是我如何才能在函数中间等待直到标志为真而不需要“忙等待”?


桃花长相依
浏览 472回答 3
3回答

哆啦的时光机

Javascript是单线程的,因此页面阻塞行为。您可以使用其他人建议的延期/承诺方法,但是最基本的方法是使用window.setTimeout。例如function checkFlag() {    if(flag == false) {       window.setTimeout(checkFlag, 100); /* this checks the flag every 100 milliseconds*/    } else {      /* do something*/    }}checkFlag();这是一个很好的教程,带有进一步的说明:教程编辑正如其他人指出的那样,最好的方法是重新组织代码以使用回调。但是,此答案应该使您了解如何使用来“模拟”异步行为window.setTimeout。

慕工程0101907

function waitFor(condition, callback) {    if(!condition()) {        console.log('waiting');        window.setTimeout(waitFor.bind(null, condition, callback), 100); /* this checks the flag every 100 milliseconds*/    } else {        console.log('done');        callback();    }}采用:waitFor(() => window.waitForMe, () => console.log('got you'))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript