async函數其實是Geneator函數的語法糖。
1.async函數的返回值是Promise對象,可以用then方法指定下一步的操作。async函數可以看做多個異步操作,包裝成一個Promise對象,await命令就是內部then命令的語法糖。
2.async函數返回一個Promise對象,可以使用then方法添加回調函數。當函數執行的時候,一旦遇到await就會先返回,等到異步操作完成,再接着執行函數體后面的語句。
例:
async function getStockPriceByName(name){ const symbol = await getStockSymbol(name); const stockPrice = await getStockPricd(symbol); return stockPrice; } getStockPriceByName('goog').then(function(res){ console.log(res); })
函數前面的async關鍵字,表明該函數內部有異步操作。調用該函數時,會立即返回一個Promise對象。
3.返回Promise對象
async函數返回一個Promise對象。
async函數內部return語句返回的值,會成為then方法回調函數的參數。
async function f(){ return 'hello world'; } f().then(v=>console.log(v)) // "hello world;"
參考資料:async函數的返回值