为了账号安全,请及时绑定邮箱和手机立即绑定

等到flag = true

等到flag = true

桃花长相依 2019-12-27 10:41:36
我有这样的javascript函数:function myFunction(number) {    var x=number;    ...    ... more initializations    //here need to wait until flag==true    while(flag==false)    {}    ...    ... do something}问题是javascript卡在了一段时间,卡住了我的程序。所以我的问题是我如何才能在函数中间等待直到标志为真而不需要“忙等待”?
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

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。


查看完整回答
反对 回复 2019-12-27
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

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'))


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 454 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信