返回Promise <void>的异步函数是否在块结尾处有隐式返回?

Gal*_*ala 8 javascript typescript es6-promise

public async demo(): Promise<void> {
    // Do some stuff here
    // Doing more stuff
    // ... 
    // End of block without return;
}
Run Code Online (Sandbox Code Playgroud)

是否Promise<void>在TypeScript/ES6的块末尾隐含地返回了新的内容?

布尔类型的示例:

class Test {

    public async test(): Promise<boolean> {
        return true;
    }

    public main(): void {

        this.test().then((data: boolean) => {

            console.log(data);

        });

    }

}

new Test().main();
Run Code Online (Sandbox Code Playgroud)

这会打印true到控制台,因为return异步函数内部会创建一个新函数Promiseresolve()使用返回的数据调用它.怎么样Promise<void>

bas*_*rat 14

Promise会发生什么

返回的函数也是如此void.一个void函数返回undefined.一个Promise<void>解决方案undefined.

function foo(){}; console.log(foo()); // undefined
async function bar(){}; bar().then(res => console.log(res)); // undefined
Run Code Online (Sandbox Code Playgroud)

  • 如果它是异步的,它总是“Promise&lt;something&gt;”。如果函数是异步的并且不返回任何内容,那么它的“Promise&lt;void&gt;” (7认同)
  • @user7630232 它将是 `Promise&lt;返回对象的推断类型&gt;` (3认同)