ES6之a(chǎn)sync的常用簡單總結(jié)

1.Async函數(shù)是什么

generator函數(shù)的語法糖。
Async函數(shù)返回一個Promise對象,當(dāng)函數(shù)執(zhí)行的時候,遇到await就會先返回,等到異步處理完成之后,再接著處理函數(shù)體內(nèi)await后面的語句。

2.Async函數(shù)怎么用

eg.1

async searchFun() {
      const { code, data } = await service('categorySearch', { name: this.keyWord });
      if (code === 200) {
        this.searchResult = data;
      }
    }

上面這個async函數(shù)大概效果就是,請求’categorySearch‘接口,獲取返回結(jié)果,并把獲取到的data值賦值給’searchResult‘。
分析為什么要這么寫?
service應(yīng)該改是個異步接口請求的方法,請求需要一定時間;我們必須等接口請求成功有返回值時,才能給searchResult賦值;否則searchResult賦值結(jié)果可能是空。

eg.2

async function f() {
  return 'hello world';
}

f().then((v) => {  
   console.log(v);  // hello world
});

這個async函數(shù)例子和上面的例子最大的區(qū)別就是加了then()方法處理。
為什么可以使用then?
async函數(shù)返回的是一個Promise對象,所以可以使用then方法處理。而且,async函數(shù)內(nèi)部return語句的返回值,會成為then方法回電函數(shù)的參數(shù)。
同樣,async函數(shù)也可以使用catch方法處理錯誤。

3.Async函數(shù)的語法

有上面的兩個簡單的例子可以看出來主要有下面兩個。

  • async
    async函數(shù)就是在普通函數(shù)前面加async關(guān)鍵字,表面該函數(shù)內(nèi)部有異步操作。
  • await
    await命令只能出現(xiàn)在async函數(shù)內(nèi)部,當(dāng)然也可以沒有。
    await命令后面可以是Promise對象和原始數(shù)據(jù)類型(number,string,Boolean);但是原始數(shù)據(jù)類型會自動轉(zhuǎn)成resolved的Promise對象。

4.來源

以上總結(jié)主要來自于阮一峰的ES6入門教程之a(chǎn)sync一章

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容