不应该是等f1执行完在打印吗?

问题:设置了定时器,也改成了同步,为什么打印出来的“你成功了”是在最开始就打印了,不应该是等f1执行完在打印吗?

html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>
    <style>
        .div {
            width: 510px;
            height: 510px;
            /* 绝对定位 */
            position: absolute;
            border: 1px solid red;
        }

        .flower {
            /* 相对定位,是相对原来的位置进行定位 */
            position: relative;
            left: 400px;
            top: 450px;
        }

        .btn {
            margin-top: 500px;
            margin-left: 600px;
        }

        .cute {
            position: relative;
            left: 0px;
            top: 0px;
        }
    style>
head>

<body>
    <div class="div">
        <img src="./img/骆驼.svg" alt="" class="cute">
        <img src="./img/flower.png" alt="" class="flower">

    div>

    <button class="btn">向前走button>
    <button class="btn1">向下走button>

body>
<script>
    var btn = document.querySelector('.btn')
    var btn1 = document.querySelector('.btn1')
    var cute = document.querySelector('.cute')
    var flower = document.querySelector('.flower')
    // console.log(flower.offsetLeft);
    // console.log(flower.offsetTop);
    // console.log(cute.offsetLeft);
    // btn.addEventListener('click',function(){
    let i = 0
    // 执行顺序不同,定时器最后执行
    const f1 = async () => {
        return new Promise(resolve => {
            setInterval(function () {
                resolve()
                i += 20
                if (i < 320) {
                    cute.style.left = cute.offsetLeft + 30 + 'px'
                    console.log(cute.offsetLeft);

                }

            }, 300)
        });
    }
    const f2 = async () => {

        await f1()
       
        console.log('你成功了');
    }

    f2();
    // })
    btn1.addEventListener('click',function(){
    let i = 0
    setInterval(function () {
        i += 20
        if (i < 300) {

            cute.style.top = cute.offsetTop + 30 + 'px'
            console.log(cute.offsetTop);

        }

    }, 300)


    })
    // if(cute.offsetLeft === 450){
    //     alert('你成功了')
    // }
script>

html>

根本原因是因为await实际上是一个让出线程的标志,当程序执行到await f1()时,会先执行f1这个异步函数的300ms延时操作。
这个时候,因为await会让出线程就会转而去执行后面的console.log('你成功了'),等f1的300ms延时时间间隔一到,才会去继续执行f1剩下的操作。