How to execute Synchronize between async function blocks?

how to execute Synchronize among multiple async function blocks?
example: how do the following two async function blocks proceed sequentially?

class Example {
    first;
    second;
    constructor(){
    }
    
    async  getFirstVal(){
     this.first = await [promise]
    }
    
    async  getSecondVal(){
    this.second = await[firstpromise]
    }
    
    async  getOtherVal(){
    this.other = await[promise]
    }
    
    doSomeWork(){
    this.getFirstVal(); 
    this.getSecondVal();
    this.getOtherVal();
    ........
    }
}

excuse me, what can I do to ensure that the two asynchronous blocks in doSomeWork, first and second , are executed sequentially?
I don"t want to write the logic of this part of second to the getFirstVal method, although this will get the correct execution order, because getFirstVal may be called asynchronously in many places, and I want to encapsulate it as a separate function. Is there any good way to help me implement the sequential execution between async blocks?


async doSomeWork() {
    await  this.getFirstVal(); 
    this.getSecondVal();
    this.getOtherVal();
}

is this all right? Elegant solutions haven't been studied much, but you can take a look at Rxjs or async to get better ideas

.
    function async2() {
        console.log( 'async2');
    }
    async function async1(resolve) {
        await setTimeout(function () {
            console.log("settimeout");
            //async1async2
            resolve()
        },0);
    }
    new Promise(function (resolve) {
        async1(resolve)
    }).then(function () {
        async2()
    });
or
new Promise(function (resolve) {
        async1()
        resolve()
    }).then(function () {
        async2()
    });
Menu