首页 > 解决方案 > JavaScript 等待变量改变

问题描述

有没有办法让我的代码按照评论中描述的逻辑顺序工作?

var globalVariable;

    async function function1(){
        let sqlTableName = "work_orders"
        //Async call to google app script, which functions as backend
        //It is basically: promise.then(callback)
        google.script.run.withSuccessHandler(databaseReturn).getDatabaseTableContent(sqlTableName);

        //Synchronous call to wait for globalVariable to change to 1
        await waitForAnswer();
        
        //Some code to be extecuted after globalVariable is equal to 1
        console.log("globalVariable: ", globalVariable)
    }

    function waitForAnswer(){
        //Some sort of loop to check if variable equals to 1
        while (globalVariable != 1){
            //Maybe a timeout function
            //Or something else
            console.log("waiting...");
        }
        return;
    }

    function databaseReturn(dataFromDatabse){
        console.log(dataFromDatabse);
        globalVariable = 1;
        return;
    }

    function1();

我已经尝试了数周来开启和关闭各种async/awaitpromisesetTimeout setTimeout(() => {console.log("timeout 200ms");}, 100);循环在waitForAnswer()中。但是我的逻辑/流程出了点问题,或者我的脑海中缺少一些知识。浏览器崩溃或执行命令不是我需要的。

我需要function1()以该顺序工作,waitForAnswer()可以随意修改。

标签: javascriptasynchronousgoogle-apps-scriptasync-awaitpromise

解决方案


推荐阅读