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

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

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

用async/await 來(lái)處理異步

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

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

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

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

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

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

然后就沒(méi)問(wèn)題啦,一個(gè)簡(jiǎn)單的異步函數(shù)就OK啦,hello執(zhí)行的時(shí)候沒(méi)有阻塞后面代碼的執(zhí)行,和我們之前說(shuō)的一樣。
你可能注意到控制臺(tái)中的promise有一個(gè)resolved,這是async函數(shù)內(nèi)部的實(shí)現(xiàn)原理,如果async函數(shù)中返回一個(gè)值,當(dāng)調(diào)用該函數(shù)時(shí),內(nèi)部會(huì)調(diào)用promise.solve()方法把它轉(zhuǎn)化成一個(gè)promise()對(duì)象作為返回,但如果hello函數(shù)內(nèi)部發(fā)生錯(cuò)誤呢?那么就會(huì)調(diào)用promise.reject()返回一個(gè)promise對(duì)象,這時(shí)修改一下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ā)生錯(cuò)誤,promise對(duì)象有一個(gè)catch方法進(jìn)行捕獲。

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

async是差不多啦,我們?cè)賮?lái)熟悉一下await關(guān)鍵字,await是等待的意思,那么它在等待什么呢,它后面跟著什么呢?其實(shí)它后面可以放任何表達(dá)式,不過(guò)我們更多放的是一個(gè)promise對(duì)象的表達(dá)式。注意await關(guān)鍵字,只能放在async函數(shù)里面?。。?/p>

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

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

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

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

test();

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

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

6秒之后控制臺(tái),輸出220,我們可以看到,寫(xiě)異步代碼的就像寫(xiě)同步代碼一樣啦,再也沒(méi)有什么回調(diào)地獄這一說(shuō)啦。

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    vue窗口變化onresize詳解

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

最新評(píng)論

锦屏县| 富平县| 宁城县| 浠水县| 老河口市| 岳西县| 柳江县| 南京市| 湛江市| 宁化县| 老河口市| 盐城市| 崇信县| 古丈县| 长沙县| 宜君县| 财经| 唐海县| 朝阳县| 泌阳县| 阳西县| 当阳市| 行唐县| 民乐县| 屏山县| 潮州市| 措美县| 固始县| 绥江县| 五莲县| 泌阳县| 唐山市| 紫云| 新绛县| 大石桥市| 合川市| 万全县| 阿拉善右旗| 余干县| 定安县| 涟水县|