JS怎么彻底执行完一个函数再去执行下一个函数?

现在遇到的问题是:我在点击按钮获取数据的时候,等待框转的时候执行耗时计算方法,这个时候已经禁用掉另一个按钮的click事件,我想在耗时计算方法完成之后再去恢复那个按钮的click事件,可总是在耗时计算方法的间隙就把那个恢复click事件执行了,怎么在那个耗时计算彻底结束后再去执行恢复click事件呢??


//监听按钮获取数据
document.getElementById('Weigh').onclick = function() {
        mui.showLoading("正在获取数据...", "div");//等待框
        document.getElementById('btn1').onclick=null//防止计算的时候点击另一个按钮,导致程序崩掉,所以就先禁用掉onclick
        setTimeout(function() {
            getWeight()//耗时计算方法
            mui.hideLoading();//隐藏等待框
        }, 2000);
    }

//耗时计算的方法
function getBoxWeight() {
        WebViewJavascriptBridge.callHandler(
            'getWeight', {
                'param': ""
            },
            function(responseData) {
                if (responseData != "false") {
                    var Weight = document.getElementById("weight");
                    Weight.value = responseData;
                }
            }
        );
    }

//想要恢复之前禁用的按钮的onclick
function huifu(){
    document.getElementById('div1').onclick=fn1()
}

js方法执行是同步的,也就是说一前一后两个function并不是按照代码编写顺序执行的,两个function是同时执行的。就你的问题而言,你想要先执行getBoxWeight方法然后再执行huifu方法,这样的话,你就需要实现异步。js的异步函数需要使用async、await关键字,具体的使用方法你可以去查看MDN的async函数(MDN是学js必备的神器)。
你的代码可以改为这样:

 
async function asynchronousFunction() {
    //监听按钮获取数据
    document.getElementById('Weigh').onclick = function() {
            mui.showLoading("正在获取数据...", "div");//等待框
            document.getElementById('btn1').onclick=null//防止计算的时候点击另一个按钮,导致程序崩掉,所以就先禁用掉onclick
            setTimeout(function() {
                getWeight()//耗时计算方法
                mui.hideLoading();//隐藏等待框
            }, 2000);
        }
    //耗时计算的方法
    await function getBoxWeight() {
            WebViewJavascriptBridge.callHandler(
                'getWeight', {
                    'param': ""
                },
                function(responseData) {
                    if (responseData != "false") {
                        var Weight = document.getElementById("weight");
                        Weight.value = responseData;
                    }
                }
            );
        }
    //想要恢复之前禁用的按钮的onclick
    await function huifu(){
        document.getElementById('div1').onclick=fn1()
    }
}

setTimeout(function() {
getWeight();
mui.hideLoading();
这里恢复禁用的函数
fn1();
}, 2000);