最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

用async/await 來處理異步

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

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

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

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

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

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

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

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

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

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

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

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

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

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

然后我們調(diào)用這個函數(shù)

test();

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

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,我們可以看到,寫異步代碼的就像寫同步代碼一樣啦,再也沒有什么回調(diào)地獄這一說啦。

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

相關(guān)文章

  • Vue computed計算屬性總結(jié)記錄

    Vue computed計算屬性總結(jié)記錄

    在vue中,有時候你需要對data中的數(shù)據(jù)進行處理,或者對抓取的數(shù)據(jù)進行處理之后再掛載呈現(xiàn)到標簽中,這時候你就需要計算屬性了,當然看到這里你可能還是不了解那下面我舉幾個實例并附代碼解釋
    2023-02-02
  • 基于vue 動態(tài)加載圖片src的解決方法

    基于vue 動態(tài)加載圖片src的解決方法

    下面小編就為大家分享一篇基于vue 動態(tài)加載圖片src的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue中的父子組件傳值及傳方法

    Vue中的父子組件傳值及傳方法

    這篇文章主要介紹了Vue中的父子組件傳值及傳方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue實現(xiàn)樹形結(jié)構(gòu)樣式和功能的實例代碼

    vue實現(xiàn)樹形結(jié)構(gòu)樣式和功能的實例代碼

    這篇文章主要介紹了vue樹形結(jié)構(gòu)樣式和功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • vue項目如何讓局域網(wǎng)ip訪問配置設(shè)置

    vue項目如何讓局域網(wǎng)ip訪問配置設(shè)置

    這篇文章主要介紹了vue項目如何讓局域網(wǎng)ip訪問配置設(shè)置,具有很好的參考價值,希望對大家有所幫助。
    2022-09-09
  • vue實現(xiàn)瀑布流布局的示例代碼

    vue實現(xiàn)瀑布流布局的示例代碼

    這篇文章主要為大家詳細介紹了如何利用vue實現(xiàn)簡單的瀑布流布局,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-09-09
  • 深入解析Vue中的this.$forceUpdate()的使用

    深入解析Vue中的this.$forceUpdate()的使用

    this.$forceUpdate()?是一個重要的實例方法,本文主要介紹了深入解析Vue中的this.$forceUpdate()的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • 詳解vue項目構(gòu)建與實戰(zhàn)

    詳解vue項目構(gòu)建與實戰(zhàn)

    這篇文章主要介紹了詳解vue項目構(gòu)建與實戰(zhàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Vue-resource攔截器判斷token失效跳轉(zhuǎn)的實例

    Vue-resource攔截器判斷token失效跳轉(zhuǎn)的實例

    下面小編就為大家?guī)硪黄猇ue-resource攔截器判斷token失效跳轉(zhuǎn)的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • vue窗口變化onresize詳解

    vue窗口變化onresize詳解

    這篇文章主要介紹了vue窗口變化onresize,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論

大足县| 十堰市| 浏阳市| 大理市| 余姚市| 清徐县| 伊通| 乌拉特中旗| 灵璧县| 平湖市| 长春市| 安康市| 遵化市| 玉树县| 芜湖县| 阿合奇县| 加查县| 太仆寺旗| 河北省| 扎赉特旗| 海伦市| 饶平县| 澄城县| 双流县| 广河县| 铜鼓县| 姚安县| 澄江县| 手机| 义乌市| 荥经县| 扶绥县| 沅江市| 历史| 安西县| 唐海县| 四子王旗| 中山市| 云和县| 吉首市| 丰都县|