js如何让函数依次执行

这是我的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script>
    function f(){
        setTimeout(function (){
            let a=document.createElement("div");
            a.id="AX";
            document.body.append(a);
        },1000);
    }
    function g(){
        document.getElementById("AX").innerHTML="abc";
    }

    f();
    g();
</script>

</body>
</html>

它本该输出abc,但是没有。因为g在f之前执行了。
我希望g在f之后执行。

要做成回调的形式执行g函数,要不f中添加div是延时执行的,执行g的时候并没有生成dom出错了
有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~


<script>
    function f(callback) {
        setTimeout(function () {
            let a = document.createElement("div");
            a.id = "AX";
            document.body.append(a);
            callback();/////
        }, 1000);
    }
    function g() {
        document.getElementById("AX").innerHTML = "abc";
    }
    f(g);//这样调用就没问题了
</script>

可以使用promise或者async awit

写成一个函数不行吗?把

document.getElementById("AX").innerHTML="abc";
放在
 document.body.append(a);
后面。

第一种方法,你可以把f函数的计数器去掉
第二种方法,如果你要保留计时器的话,可以做一个判断,我举个例子,你定义一个level = 0,你让f函数执行完level+1,判断level = 1是执行g函数,这样应该可以实现你的需求

回调函数,promise,async await