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

Javascript的promise,async和await的區(qū)別詳解

 更新時(shí)間:2022年03月23日 16:33:37   作者:河流兒  
這篇文章主要為大家詳細(xì)介紹了Javascript的promise,async和await的區(qū)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

終于把promise, async, await的區(qū)別和聯(lián)系弄清楚了,看下面代碼

寫法1,2是promise的寫法

寫法6是async和await的寫法

主要看第2種寫法和第6中寫法即可, 第2種寫法是promise的典型寫法,第6中寫法是async, await的典型寫法

// 以下三個(gè)請(qǐng)求依次執(zhí)行
req1 = () => { return fetch("http://example.com/api/v1/get")}
req2 = () => { return fetch("http://example.com/api/v1/post")}
req3 = () => { return fetch("http://example.com/api/v1/delete")}
//寫法1
req1().then(res=>{
    console.log("1: ",res)
    req2().then(res =>{
        console.log("2: ",res)
        req3().then(res =>{
            console.log("3: ",res)
        })
    })
})

// 寫法2
req1().then(res =>{
    console.log("1: ", res)
    return req2()
})
.then(res =>{
    console.log("2: ", res)
    return req3()
})
.then(res =>{
    console.log("3: ", res)
})
// 寫法3
function f1(){
    req1()
    req2()
    req3()
}
// 寫法4
async  function f2(){
    await req1
    await req2
    await req3
}
// 寫法5
async  function f3(){
    req1().then(res => {
        console.log("1:", res)
    })
    await f3_1()
}
async function f3_1(){
    req1().then(res => {
        console.log("2:", res)
    })
    await f3_2()
}
async function f3_2(){
    req2().then(res=>{
         console.log("3: ",res)
    })
}
// 寫法6
ff()
async function ff(){
    await req1_good()
}
async function req1_good(){
    fetch("http://example.com/api/v1/get").then(res =>{
        console.log("1: ",res)
    })
    await req2_good()
}
async  function req2_good() {
    fetch("http://example.com/api/v1/post").then(res =>{
        console.log("2: ",res)
    })
    await req3_good()
}
async function req3_good() {
     fetch("http://example.com/api/v1/delete").then(res => {
         console.log("3: ",res)
     })
}

  • 最外層的async函數(shù)調(diào)用之后立即返回了,但是async還是里面還是在逐層執(zhí)行
  • await的作用是等待其修飾的函數(shù)內(nèi)部的所有await函數(shù)都執(zhí)行完畢,
  • 從最外層啟動(dòng)一個(gè)async函數(shù)相當(dāng)于go一個(gè)協(xié)程,await func 也相當(dāng)于go 一個(gè)協(xié)程,不同在于await = go + waitgroup
  • await比promise高明的地方在于,promise在then里面調(diào)用另一個(gè)promise時(shí),不得不return另一個(gè)promise再then, 或者在then中回調(diào),但是await完全不需要
  • async是為了異步,await是為了異步+阻塞,缺一不可

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!   

相關(guān)文章

  • javascript 模擬坦克大戰(zhàn)游戲(html5版)附源碼下載

    javascript 模擬坦克大戰(zhàn)游戲(html5版)附源碼下載

    這篇文章主要介紹了javascript 模擬坦克大戰(zhàn)游戲關(guān)鍵點(diǎn)和遇到的問題及實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-04-04
  • 微信小程序多表聯(lián)合查詢的實(shí)現(xiàn)詳解

    微信小程序多表聯(lián)合查詢的實(shí)現(xiàn)詳解

    小程序設(shè)計(jì)中,通常會(huì)根據(jù)業(yè)務(wù)來做多表的拆分,多表拆分一般是根據(jù)業(yè)務(wù)的特點(diǎn)進(jìn)行拆分。比如我們?cè)谖恼玛P(guān)注的業(yè)務(wù)中,會(huì)將文章和關(guān)注信息拆分成一對(duì)多的表關(guān)系。初學(xué)者可能對(duì)一對(duì)一、一對(duì)多、多對(duì)多的設(shè)計(jì)概念不是特別清楚
    2022-08-08
  • JS閉包經(jīng)典實(shí)例詳解

    JS閉包經(jīng)典實(shí)例詳解

    這篇文章主要介紹了JS閉包,結(jié)合一個(gè)經(jīng)典實(shí)例較為詳細(xì)的分析了javascript閉包的原理及使用方法,需要的朋友可以參考下
    2018-12-12
  • Websocket通信協(xié)議在數(shù)字孿生中的應(yīng)用

    Websocket通信協(xié)議在數(shù)字孿生中的應(yīng)用

    這篇文章主要為大家介紹了Websocket通信協(xié)議在數(shù)字孿生中的應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • JavaScript閉包原理及作用詳解

    JavaScript閉包原理及作用詳解

    閉包是指內(nèi)部函數(shù)總是可以訪問其所在的外部函數(shù)中聲明的變量和參數(shù),即使在其外部函數(shù)被返回(壽命終結(jié))了之后。這篇文章將為大家詳細(xì)介紹一下閉包的原理,作用及用途,快來跟隨小編一起學(xué)習(xí)一下吧
    2021-12-12
  • 原生JS實(shí)現(xiàn)pc端輪播圖效果

    原生JS實(shí)現(xiàn)pc端輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)pc端輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • js change,propertychange,input事件小議

    js change,propertychange,input事件小議

    github上關(guān)于mootools一個(gè)issue的討論很有意思,所以就想測(cè)試記錄下。感興趣的可以點(diǎn)擊原頁面看看
    2011-12-12
  • 一步步教你使用JavaScript打造一個(gè)掃雷游戲

    一步步教你使用JavaScript打造一個(gè)掃雷游戲

    javascript作為前端常用的開發(fā)語言,越來越多的人都在學(xué)習(xí)它,下面這篇文章主要給大家介紹了關(guān)于如何使用JavaScript打造一個(gè)掃雷游戲的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • 小程序卡片切換效果組件wxCardSwiper的實(shí)現(xiàn)

    小程序卡片切換效果組件wxCardSwiper的實(shí)現(xiàn)

    這篇文章主要介紹了小程序卡片切換效果組件wxCardSwiper的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • CKEditor 4.4.1 添加代碼高亮顯示插件功能教程【使用官方推薦Code Snippet插件】

    CKEditor 4.4.1 添加代碼高亮顯示插件功能教程【使用官方推薦Code Snippet插件】

    這篇文章主要介紹了CKEditor 4.4.1 添加代碼高亮顯示插件功能,涉及ckeditor使用官方推薦Code Snippet插件的相關(guān)操作布局與使用注意事項(xiàng),需要的朋友可以參考下
    2019-06-06

最新評(píng)論

政和县| 敦化市| 江北区| 会东县| 张家口市| 屏山县| 赣榆县| 滁州市| 申扎县| 前郭尔| 尼勒克县| 阿克| 崇文区| 湖南省| 吉首市| 玉田县| 泉州市| 得荣县| 海原县| 红原县| 任丘市| 岳西县| 诏安县| 靖边县| 龙胜| 宜都市| 青浦区| 抚顺市| 萍乡市| 仪陇县| 包头市| 贵州省| 布拖县| 吉林省| 子长县| 广平县| 光泽县| 长阳| 合水县| 柳州市| 运城市|