簡體   English   中英

從異步函數返回

[英]Return from async function

我想知道是否必須從異步函數返回,例如:

async function foo() {
  return bar(); // bar returns a promise
}

或者我可以這樣做

async function foo() {
  bar();
}

因為async會自動返回一個promise但是我應該返回原始的promise而不是async自動創建的新promise嗎?

確保異步函數返回Promise,但是當Promise結算並且它傳遞的內容由函數返回的內容決定。

這取決於您是否希望將值傳遞給鏈中的下一個promise。 通常一個好的做法是將值返回到promise,除非它是鏈中的最后一個函數,或者沒有信息傳遞(由於某種原因)。

如果調用bar()的唯一原因是因為它會導致函數外部出現一些副作用(更改全局變量,更新數據庫等),我想你無法返回。 但即便如此,我仍然會為成功返回一些價值,特別是如果bar()執行了I / O.

function bar(){
  return 'hello world';
}

async function foo1() {
  bar(); // Returns a promise with an empty value
}

async function foo2() {
  return bar(); // returns a promise with the _value_ returned from bar()
}

foo1().then(console.log); // undefined
foo2().then(console.log); // 'Hello World'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM