2017-05-27 110 views
0
public async demo(): Promise<void> { 
    // Do some stuff here 
    // Doing more stuff 
    // ... 
    // End of block without return; 
} 

新的Promise<void>隱含返回在TypeScript/ES6塊的末尾嗎?返回Promise <void>的異步函數是否在塊的末尾有隱式返回?

舉例布爾類型:

class Test { 

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

    public main(): void { 

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

      console.log(data); 

     }); 

    } 

} 

new Test().main(); 

這將打印true到控制檯,因爲return一個異步函數中創建一個新的Promise並用返回的數據調用它resolve()Promise<void>會發生什麼?

+1

如果你沒有明確地放置一個,那麼每個JavaScript/TypeScript函數在最後都有一個隱式返回。 – SpiderPig

+1

@str:當我從一個異步函數返回一些東西時,並不是隱式地返回一個新的Promise實例,它用返回數據調用'.resolve()',並分別拋出一個異常'.reject()' ? – Gala

+1

是的,異步函數總是返回一個承諾。 – SpiderPig

回答

2

與無極

同樣的事情返回void的功能會發生什麼情況。 A void函數返回undefined。 A Promise<void>解析爲undefined

function foo(){}; console.log(foo()); // undefined 
async function bar(){}; bar().then(res => console.log(res)); // undefined