简体   繁体   中英

In async functions, do we return X, or do we return "Promise.Resolve(X)"?

This is something I have never quite been able to nail down.

Consider an async function in Typescript. Which is correct?

async function asyncFunctionOne(string1: string, string2: string, string3: string) {
    var returnObject1 = new object {
        fieldOne: object1,
        fieldTwo: object2,
        fieldThree: object3
    }

    return Promise.resolve(returnObject1)
}

async function asyncFunctionTwo(string1: string, string2: string, string3: string) {
    var returnObject2 = new object {
        fieldOne: object1,
        fieldTwo: object2,
        fieldThree: object3
    }

    return returnObject2;
}

Additionally, consider we were calling this function and we needed the response for something further in our program. Would we need to await the first function, the second function, both, or neither?

That async functions always return a promise. A plain return value will be wrapped with a resolved promise always. Observe in the following code that the same result can be obtained either using await or Promise.then .

 (async function() { async function asyncFunctionTwo() { return 999; } asyncFunctionTwo().then((val => console.log(val))); //OR console.log(await asyncFunctionTwo()) })();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM