欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue使用async/await來實現(xiàn)同步和異步的案例分享

 更新時間:2024年01月14日 10:14:48   作者:aaron9185  
近期項目中大量使用async,從服務器獲取數據,解決一些并發(fā)傳參問題,代碼很簡單,在此也看了一些博客,現(xiàn)在async/await已經大范圍讓使用,所以本文給大家介紹一下vue使用async/await來實現(xiàn)同步和異步的案例,需要的朋友可以參考下

用async/await 來處理異步

近期項目中大量使用async,從服務器獲取數據,解決一些并發(fā)傳參問題。代碼很簡單。在此也看了一些博客,現(xiàn)在async/await已經大范圍讓使用,是時候總結一波啦。
先說一下async的語法,它作為一個關鍵字放在函數前面,用于表示函數是一個異步函數,因為async就是異步的異步,異步函數也就是意味著這個函數的執(zhí)行不會阻塞后面代碼的執(zhí)行。簡單的寫一個async函數

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

語法很簡單,就是在函數前面加上async,他就成異步函數啦。怎么去調用呢,其實一樣,平時怎么使用函數我們就怎么去調用它,直接加括號就可以啦,為了表示它沒有阻塞后面的代碼我們寫個案例

async function hello(){
  return 'hello world';
}
console.log(hello());
console.log('我是先執(zhí)行的');

好像沒有什么用,別急,首先我們看到hello()返回的是一個promise對象,其次它好像沒有去異步執(zhí)行。
async異步函數返回的是一個promise對象,如果要獲取到promise返回值,我們就應該使用.then方法。

async function hello(){
  return 'hello world';
}
hello().then(result=>{
  console.log(result);
})
console.log('我是先執(zhí)行的');

然后就沒問題啦,一個簡單的異步函數就OK啦,hello執(zhí)行的時候沒有阻塞后面代碼的執(zhí)行,和我們之前說的一樣。
你可能注意到控制臺中的promise有一個resolved,這是async函數內部的實現(xiàn)原理,如果async函數中返回一個值,當調用該函數時,內部會調用promise.solve()方法把它轉化成一個promise()對象作為返回,但如果hello函數內部發(fā)生錯誤呢?那么就會調用promise.reject()返回一個promise對象,這時修改一下hello()函數

async function hello(flag){
   if(flag){
      return 'hello world';
   }else{
       throw 'happen Error';
   }
}
console.log(hello(0));
console.log(hello(1));

如果函數內部發(fā)生錯誤,promise對象有一個catch方法進行捕獲。

hello(0).catch(err=>{
  console.log(err);
})

async是差不多啦,我們再來熟悉一下await關鍵字,await是等待的意思,那么它在等待什么呢,它后面跟著什么呢?其實它后面可以放任何表達式,不過我們更多放的是一個promise對象的表達式。注意await關鍵字,只能放在async函數里面?。。?/p>

function awaitMethod(num){
  return new Promise((resolve,reject)=>{
    setTimeout(()=>{
      resolve(2*num);
    },2000)
  })
}

我們再寫一個async函數,從而可以使用await關鍵字,await后面放置的是返回promise對象的一個表達式,所以它后面可以寫上awaitMethod函數的調用。

async function test (){
  let result = await awaitMethod(30);
  console.log(result);
}

然后我們調用這個函數

test();

2秒鐘之后控制臺輸出60。
現(xiàn)在我們看看代碼的執(zhí)行過程,調用test函數時,它遇到了里面的await關鍵字,await代表等待,代碼到這里會暫停,它在等什么呢,等待后面的promise對象執(zhí)行完成,然后拿到promise的返回值,拿到返回值之后它繼續(xù)往下執(zhí)行,直到console.log()執(zhí)行。
就這一個函數,或許我們看不出來asycn和await的作用,如果我們要計算3個數的值,然后把他們的值加起來輸出,或許就看的明顯啦。

async function test(){
    let result = await awaitMethod(30);
    let result1 = await awaitMethod(50);
    let result2 = await awaitMethod(30);
    console.log(result+result1+result2 );
}

6秒之后控制臺,輸出220,我們可以看到,寫異步代碼的就像寫同步代碼一樣啦,再也沒有什么回調地獄這一說啦。

以上就是vue使用async/await來實現(xiàn)同步和異步的案例分享的詳細內容,更多關于vue async/await來實現(xiàn)同步異步的資料請關注腳本之家其它相關文章!

相關文章

  • vue動態(tài)注冊組件實例代碼詳解

    vue動態(tài)注冊組件實例代碼詳解

    寫本篇文章之前其實也關注過vue中的一個關于加載動態(tài)組件is的API,最開始研究它只是用來實現(xiàn)一個tab切換的功能,需要的朋友可以參考下
    2019-05-05
  • Vue遞歸實現(xiàn)樹形菜單方法實例

    Vue遞歸實現(xiàn)樹形菜單方法實例

    學習vue有一段時間了,最近使用vue做了一套后臺管理系統(tǒng),其中使用最多就是遞歸組件,下面這篇文章主要給大家介紹了關于Vue利用遞歸實現(xiàn)樹形菜單的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-11-11
  • Jenkins自動化部署Vue項目的方法實現(xiàn)

    Jenkins自動化部署Vue項目的方法實現(xiàn)

    本文主要介紹了Jenkins自動化部署Vue項目的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue3.0中使用Element-Plus中Select下的filter-method屬性代碼示例

    vue3.0中使用Element-Plus中Select下的filter-method屬性代碼示例

    這篇文章主要給大家介紹了關于vue3.0中使用Element-Plus中Select下的filter-method屬性的相關資料,Filter-method用法是指從一組數據中選擇滿足條件的項,文中通過圖文以及代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • Vue?3?中?vue-router?的?router.resolve?()?API詳解

    Vue?3?中?vue-router?的?router.resolve?()?API詳解

    router.resolve()?就好比是一個精準的?“導航參謀”,當我們在?Vue?3?應用里需要明確某個路由地址對應的詳細信息時,它就能派上用場,本文給大家介紹Vue?3?中?vue-router?的?router.resolve?()?API,感興趣的朋友一起看看吧
    2025-04-04
  • Vue3實現(xiàn)clipboard復制的使用示例

    Vue3實現(xiàn)clipboard復制的使用示例

    在日常開發(fā)中,為用戶提供復制文本功能的需求比較常見,下面介紹一款vue3可用的插件,可以快速實現(xiàn)這個功能,感興趣的可以了解一下
    2023-11-11
  • vue引入swiper插件的使用實例

    vue引入swiper插件的使用實例

    本篇文章主要介紹了vue引入swiper插件的使用實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Vue的列表之渲染,排序,過濾詳解

    Vue的列表之渲染,排序,過濾詳解

    這篇文章主要為大家詳細介紹了Vue的列表之渲染,排序,過濾,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • element?table?數據量大頁面卡頓的解決

    element?table?數據量大頁面卡頓的解決

    這篇文章主要介紹了element?table?數據量大頁面卡頓的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • vue中el-table格式化el-table-column內容的三種方法

    vue中el-table格式化el-table-column內容的三種方法

    本文主要介紹了vue中el-table格式化el-table-column內容的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08

最新評論