1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Promise、Generator、async有什么區(qū)別?

        共 6904字,需瀏覽 14分鐘

         ·

        2022-02-17 17:43

        前言

        我們知道PromiseAsync/await函數(shù)都是用來(lái)解決JavaScript中的異步問(wèn)題的,從最開(kāi)始的回調(diào)函數(shù)處理異步,到Promise處理異步,到Generator處理異步,再到Async/await處理異步,每一次的技術(shù)更新都使得JavaScript處理異步的方式更加優(yōu)雅,從目前來(lái)看,Async/await被認(rèn)為是異步處理的終極解決方案,讓JS的異步處理越來(lái)越像同步任務(wù)。「異步編程的最高境界,就是根本不用關(guān)心它是不是異步」。

        異步解決方案的發(fā)展歷程

        1.回調(diào)函數(shù)

        從早期的Javascript代碼來(lái)看,在ES6誕生之前,基本上所有的異步處理都是基于回調(diào)函數(shù)函數(shù)實(shí)現(xiàn)的,你們可能會(huì)見(jiàn)過(guò)下面這種代碼:

        ajax('aaa',?()?=>?{
        ????//?callback?函數(shù)體
        ????ajax('bbb',?()?=>?{
        ????????//?callback?函數(shù)體
        ????????ajax('ccc',?()?=>?{
        ????????????//?callback?函數(shù)體
        ????????})
        ????})
        })

        沒(méi)錯(cuò),在ES6出現(xiàn)之前,這種代碼可以說(shuō)是隨處可見(jiàn)。它雖然解決了異步執(zhí)行的問(wèn)題,可隨之而來(lái)的是我們常聽(tīng)說(shuō)的「回調(diào)地獄」問(wèn)題:

        • 沒(méi)有順序可言:嵌套函數(shù)執(zhí)行帶來(lái)的是調(diào)試?yán)щy,不利于維護(hù)與閱讀
        • 耦合性太強(qiáng):一旦某一個(gè)嵌套層級(jí)有改動(dòng),就會(huì)影響整個(gè)回調(diào)的執(zhí)行

        「所以,為了解決這個(gè)問(wèn)題,社區(qū)最早提出和實(shí)現(xiàn)了Promise,ES6將其寫(xiě)進(jìn)了語(yǔ)言標(biāo)準(zhǔn),統(tǒng)一了用法?!?/strong>

        2.Promise

        Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強(qiáng)大。它就是為了解決回調(diào)函數(shù)產(chǎn)生的問(wèn)題而誕生的。

        有了Promise對(duì)象,就可以將異步操作以同步操作的流程表達(dá)出來(lái),避免了層層嵌套的回調(diào)函數(shù)。此外,Promise對(duì)象提供統(tǒng)一的接口,使得控制異步操作更加容易。

        所以上面那種回調(diào)函數(shù)的方式我們可以改成這樣:(前提是ajax已用Promise包裝)

        ajax('aaa').then(res=>{
        ??return?ajax('bbb')
        }).then(res=>{
        ??return?ajax('ccc')
        })

        通過(guò)使用Promise來(lái)處理異步,比以往的回調(diào)函數(shù)看起來(lái)更加清晰了,解決了回調(diào)地獄的問(wèn)題,Promisethen的鏈?zhǔn)秸{(diào)用更能讓人接受,也符合我們同步的思想。

        「但Promise也有它的缺點(diǎn):」

        • Promise的內(nèi)部錯(cuò)誤使用try catch捕獲不到,只能只用then的第二個(gè)回調(diào)或catch來(lái)捕獲
        let?pro
        try{
        ????pro?=?new?Promise((resolve,reject)?=>?{
        ????????throw?Error('err....')
        ????})
        }catch(err){
        ????console.log('catch',err)?//?不會(huì)打印
        }
        pro.catch(err=>{
        ????console.log('promise',err)?//?會(huì)打印
        })
        • Promise一旦新建就會(huì)立即執(zhí)行,無(wú)法取消

        之前寫(xiě)過(guò)一篇從如何使用到如何實(shí)現(xiàn)一個(gè)Promise,講解了Promise如何使用以及內(nèi)部實(shí)現(xiàn)原理。對(duì)Promise還不太理解的同學(xué)可以看看~

        3.Generator

        Generator 函數(shù)是 ES6 提供的一種異步編程解決方案,語(yǔ)法行為與傳統(tǒng)函數(shù)完全不同。Generator 函數(shù)將 JavaScript 異步編程帶入了一個(gè)全新的階段。

        聲明

        與函數(shù)聲明類(lèi)似,不同的是function關(guān)鍵字與函數(shù)名之間有一個(gè)星號(hào),以及函數(shù)體內(nèi)部使用yield表達(dá)式,定義不同的內(nèi)部狀態(tài)(yield在英語(yǔ)里的意思就是“產(chǎn)出”)。

        function*?gen(x){
        ?const?y?=?yield?x?+?6;
        ?return?y;
        }
        //?yield?如果用在另外一個(gè)表達(dá)式中,要放在()里面
        //?像上面如果是在=右邊就不用加()
        function*?genOne(x){
        ??const?y?=?`這是第一個(gè)?yield?執(zhí)行:${yield?x?+?1}`;
        ?return?y;
        }

        執(zhí)行

        const?g?=?gen(1);
        //執(zhí)行?Generator?會(huì)返回一個(gè)Object,而不是像普通函數(shù)返回return?后面的值
        g.next()?//?{?value:?7,?done:?false?}
        //調(diào)用指針的?next?方法,會(huì)從函數(shù)的頭部或上一次停下來(lái)的地方開(kāi)始執(zhí)行,直到遇到下一個(gè)?yield?表達(dá)式或return語(yǔ)句暫停,也就是執(zhí)行yield?這一行
        //?執(zhí)行完成會(huì)返回一個(gè)?Object,
        //?value?就是執(zhí)行?yield?后面的值,done?表示函數(shù)是否執(zhí)行完畢
        g.next()?//?{?value:?undefined,?done:?true?}
        //?因?yàn)樽詈笠恍?return?y?被執(zhí)行完成,所以done?為?true

        調(diào)用 Generator 函數(shù)后,該函數(shù)并不執(zhí)行,返回的也不是函數(shù)運(yùn)行結(jié)果,而是一個(gè)指向內(nèi)部狀態(tài)的指針對(duì)象,也就是遍歷器對(duì)象(Iterator Object)。下一步,必須調(diào)用遍歷器對(duì)象的next方法,使得指針移向下一個(gè)狀態(tài)。

        所以上面的回調(diào)函數(shù)又可以寫(xiě)成這樣:

        function?*fetch()?{
        ????yield?ajax('aaa')
        ????yield?ajax('bbb')
        ????yield?ajax('ccc')
        }
        let?gen?=?fetch()
        let?res1?=?gen.next()?//?{?value:?'aaa',?done:?false?}
        let?res2?=?gen.next()?//?{?value:?'bbb',?done:?false?}
        let?res3?=?gen.next()?//?{?value:?'ccc',?done:?false?}
        let?res4?=?gen.next()?//?{?value:?undefined,?done:?true?}?done為true表示執(zhí)行結(jié)束

        由于 Generator 函數(shù)返回的遍歷器對(duì)象,只有調(diào)用next方法才會(huì)遍歷下一個(gè)內(nèi)部狀態(tài),所以其實(shí)提供了一種可以暫停執(zhí)行的函數(shù)。yield表達(dá)式就是暫停標(biāo)志。

        遍歷器對(duì)象的next方法的運(yùn)行邏輯如下。

        (1)遇到yield表達(dá)式,就暫停執(zhí)行后面的操作,并將緊跟在yield后面的那個(gè)表達(dá)式的值,作為返回的對(duì)象的value屬性值。

        (2)下一次調(diào)用next方法時(shí),再繼續(xù)往下執(zhí)行,直到遇到下一個(gè)yield表達(dá)式。

        (3)如果沒(méi)有再遇到新的yield表達(dá)式,就一直運(yùn)行到函數(shù)結(jié)束,直到return語(yǔ)句為止,并將return語(yǔ)句后面的表達(dá)式的值,作為返回的對(duì)象的value屬性值。

        (4)如果該函數(shù)沒(méi)有return語(yǔ)句,則返回的對(duì)象的value屬性值為undefined。

        yield表達(dá)式本身沒(méi)有返回值,或者說(shuō)總是返回undefined。next方法可以帶一個(gè)參數(shù),該參數(shù)就會(huì)被當(dāng)作上一個(gè)yield表達(dá)式的返回值?!?/strong>

        怎么理解這句話(huà)?我們來(lái)看下面這個(gè)例子:

        function*?foo(x)?{
        ??var?y?=?2?*?(yield?(x?+?1));
        ??var?z?=?yield?(y?/?3);
        ??return?(x?+?y?+?z);
        }

        var?a?=?foo(5);
        a.next()?//?Object{value:6,?done:false}
        a.next()?//?Object{value:NaN,?done:false}
        a.next()?//?Object{value:NaN,?done:true}

        var?b?=?foo(5);
        b.next()?//?{?value:6,?done:false?}
        b.next(12)?//?{?value:8,?done:false?}
        b.next(13)?//?{?value:42,?done:true?}

        由于yield沒(méi)有返回值,所以(yield(x+1))執(zhí)行后的值是undefined,所以在第二次執(zhí)行a.next()是其實(shí)是執(zhí)行的2*undefined,所以值是NaN,所以下面b的例子中,第二次執(zhí)行b.next()時(shí)傳入了12,它會(huì)當(dāng)成第一次b.next()的執(zhí)行返回值,所以b的例子中能夠正確計(jì)算。「這里不能把next執(zhí)行結(jié)果中的value值與yield返回值搞混了,它兩不是一個(gè)東西」

        yield與return的區(qū)別

        相同點(diǎn):

        • 都能返回語(yǔ)句后面的那個(gè)表達(dá)式的值
        • 都可以暫停函數(shù)執(zhí)行

        區(qū)別:

        • 一個(gè)函數(shù)可以有多個(gè) yield,但是只能有一個(gè) return
        • yield 有位置記憶功能,return 沒(méi)有

        4.Async/await

        Async/await其實(shí)就是上面Generator的語(yǔ)法糖,async函數(shù)其實(shí)就相當(dāng)于funciton *的作用,而await就相當(dāng)與yield的作用。而在async/await機(jī)制中,自動(dòng)包含了我們上述封裝出來(lái)的spawn自動(dòng)執(zhí)行函數(shù)。

        所以上面的回調(diào)函數(shù)又可以寫(xiě)的更加簡(jiǎn)潔了:

        async?function?fetch()?{
        ???await?ajax('aaa')
        ????await?ajax('bbb')
        ????await?ajax('ccc')
        }
        //?但這是在這三個(gè)請(qǐng)求有相互依賴(lài)的前提下可以這么寫(xiě),不然會(huì)產(chǎn)生性能問(wèn)題,因?yàn)槟忝恳粋€(gè)請(qǐng)求都需要等待上一次請(qǐng)求完成后再發(fā)起請(qǐng)求,如果沒(méi)有相互依賴(lài)的情況下,建議讓它們同時(shí)發(fā)起請(qǐng)求,這里可以使用Promise.all()來(lái)處理

        async函數(shù)對(duì)Generator函數(shù)的改進(jìn),體現(xiàn)在以下四點(diǎn):

        • 內(nèi)置執(zhí)行器:async函數(shù)執(zhí)行與普通函數(shù)一樣,不像Generator函數(shù),需要調(diào)用next方法,或使用co模塊才能真正執(zhí)行
        • 語(yǔ)意化更清晰:asyncawait,比起星號(hào)和yield,語(yǔ)義更清楚了。async表示函數(shù)里有異步操作,await表示緊跟在后面的表達(dá)式需要等待結(jié)果。
        • 適用性更廣:co模塊約定,yield命令后面只能是 Thunk 函數(shù)或 Promise 對(duì)象,而async函數(shù)的await命令后面,可以是 Promise 對(duì)象和原始類(lèi)型的值(數(shù)值、字符串和布爾值,但這時(shí)會(huì)自動(dòng)轉(zhuǎn)成立即 resolved 的 Promise 對(duì)象)。
        • 返回值是Promise:async函數(shù)的返回值是 Promise 對(duì)象,這比 Generator 函數(shù)的返回值是 Iterator 對(duì)象方便多了。你可以用then方法指定下一步的操作。

        async函數(shù)

        async函數(shù)的返回值為Promise對(duì)象,所以它可以調(diào)用then方法

        async?function?fn()?{
        ??return?'async'
        }
        fn().then(res?=>?{
        ??console.log(res)?//?'async'
        })

        await表達(dá)式

        「await」 右側(cè)的表達(dá)式一般為 「promise」 對(duì)象, 但也可以是其它的值

        1. 如果表達(dá)式是 promise 對(duì)象, await 返回的是 promise 成功的值
        2. 如果表達(dá)式是其它值, 直接將此值作為 await 的返回值
        3. await后面是Promise對(duì)象會(huì)阻塞后面的代碼,Promise 對(duì)象 resolve,然后得到 resolve 的值,作為 await 表達(dá)式的運(yùn)算結(jié)果
        4. 所以這就是await必須用在async的原因,async剛好返回一個(gè)Promise對(duì)象,可以異步執(zhí)行阻塞
        function?fn()?{
        ????return?new?Promise((resolve,?reject)?=>?{
        ????????setTimeout(()?=>?{
        ????????????resolve(1000)
        ????????},?1000);
        ????})
        }
        function?fn1()?{?return?'nanjiu'?}
        async?function?fn2()?{
        ????//?const?value?=?await?fn()?//?await?右側(cè)表達(dá)式為Promise,得到的結(jié)果就是Promise成功的value
        ????//?const?value?=?await?'南玖'
        ????const?value?=?await?fn1()
        ????console.log('value',?value)
        }
        fn2()?//?value?'nanjiu'

        異步方案比較

        后三種方案都是為解決傳統(tǒng)的回調(diào)函數(shù)而提出的,所以它們相對(duì)于回調(diào)函數(shù)的優(yōu)勢(shì)不言而喻。而async/await又是Generator函數(shù)的語(yǔ)法糖。

        • Promise的內(nèi)部錯(cuò)誤使用try catch捕獲不到,只能只用then的第二個(gè)回調(diào)或catch來(lái)捕獲,而async/await的錯(cuò)誤可以用try catch捕獲
        • Promise一旦新建就會(huì)立即執(zhí)行,不會(huì)阻塞后面的代碼,而async函數(shù)中await后面是Promise對(duì)象會(huì)阻塞后面的代碼。
        • async函數(shù)會(huì)隱式地返回一個(gè)promise,該promisereosolve值就是函數(shù)return的值。
        • 使用async函數(shù)可以讓代碼更加簡(jiǎn)潔,不需要像Promise一樣需要調(diào)用then方法來(lái)獲取返回值,不需要寫(xiě)匿名函數(shù)處理Promise的resolve值,也不需要定義多余的data變量,還避免了嵌套代碼。

        說(shuō)了這么多,順便看個(gè)題吧~

        console.log('script?start')
        async?function?async1()?{
        ????await?async2()
        ????console.log('async1?end')
        }
        async?function?async2()?{
        ????console.log('async2?end')
        }
        async1()

        setTimeout(function()?{
        ????console.log('setTimeout')
        },?0)

        new?Promise(resolve?=>?{
        ????console.log('Promise')
        ????resolve()
        })
        .then(function()?{
        ????console.log('promise1')
        })
        .then(function()?{
        ????console.log('promise2')
        })
        console.log('script?end')

        「解析:」

        打印順序應(yīng)該是:script start -> async2 end -> Promise -> script end -> async1 end -> promise1 -> promise2 -> setTimeout

        老規(guī)矩,全局代碼自上而下執(zhí)行,先打印出script start,然后執(zhí)行async1(),里面先遇到await async2(),執(zhí)行async2,打印出async2 end,然后await后面的代碼放入微任務(wù)隊(duì)列,接著往下執(zhí)行new Promise,打印出Promise,遇見(jiàn)了resolve,將第一個(gè)then方法放入微任務(wù)隊(duì)列,接著往下執(zhí)行打印出script end,全局代碼執(zhí)行完了,然后從微任務(wù)隊(duì)列中取出第一個(gè)微任務(wù)執(zhí)行,打印出async1 end,再取出第二個(gè)微任務(wù)執(zhí)行,打印出promise1,然后這個(gè)then方法執(zhí)行完了,當(dāng)前Promise的狀態(tài)為fulfilled,它也可以出發(fā)then的回調(diào),所以第二個(gè)then這時(shí)候又被加進(jìn)了微任務(wù)隊(duì)列,然后再出微任務(wù)隊(duì)列中取出這個(gè)微任務(wù)執(zhí)行,打印出promise2,此時(shí)微任務(wù)隊(duì)列為空,接著執(zhí)行宏任務(wù)隊(duì)列,打印出setTimeout。

        「解題技巧:」

        • 無(wú)論是then還是catch里的回調(diào)內(nèi)容只要代碼正常執(zhí)行或者正常返回,則當(dāng)前新的Promise實(shí)例為fulfilled狀態(tài)。如果有報(bào)錯(cuò)或返回Promise.reject()則新的Promise實(shí)例為rejected狀態(tài)。
        • fulfilled狀態(tài)能夠觸發(fā)then回調(diào)
        • rejected狀態(tài)能夠觸發(fā)catch回調(diào)
        • 執(zhí)行async函數(shù),返回的是Promise對(duì)象
        • await相當(dāng)于Promise的then并且同一作用域下await下面的內(nèi)容全部作為then中回調(diào)的內(nèi)容
        • 異步中先執(zhí)行微任務(wù),再執(zhí)行宏任務(wù)

        最后



        如果你覺(jué)得這篇內(nèi)容對(duì)你挺有啟發(fā),我想邀請(qǐng)你幫我三個(gè)小忙:

        1. 點(diǎn)個(gè)「在看」,讓更多的人也能看到這篇內(nèi)容(喜歡不點(diǎn)在看,都是耍流氓 -_-)

        2. 歡迎加我微信「qianyu443033099」拉你進(jìn)技術(shù)群,長(zhǎng)期交流學(xué)習(xí)...

        3. 關(guān)注公眾號(hào)「前端下午茶」,持續(xù)為你推送精選好文,也可以加我為好友,隨時(shí)聊騷。


        點(diǎn)個(gè)在看支持我吧,轉(zhuǎn)發(fā)就更好了

        瀏覽 38
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

          <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            成人A片免费| 久久久无码精品亚洲日韩男男 | 台湾无码| 亚洲欧美在线观看视频| 精品国产久| 亚洲AV无码乱码国产精品| 最新久欠一区二区免费看| 51成人网站免费| 婷婷九月| 三级中文无码| 乱伦一区二区三区| 黄色电影一区二区三区| 亚洲激情小说| 亚洲免费成人| 99热免费观看| 天天摸天天日| 午夜亚洲精品| 精品国产免费无码久久噜噜噜AV | 超碰人人操| 熟女人妻人妻の视频| 中文字幕在线免费看线人| 日韩一区二| 国内自拍网站| 日韩无码高清免费视频| 国产精品123| 欧美精品在线播放| 婷婷色色网| 色天堂在线观看视频| 中国AV网| 色婷婷俺来也| 丁香五月天色婷婷| 懂色中文字幕| 免费黄色大片| 俺来也AV| 操逼电影| 国产—a毛—a毛A免费看图| 翔田千里91| 成人精品福利| 亚洲超级高清无码第一在线视频观看| 青青操成人| 欧美成人黄色电影| 中文字幕亞洲高清手機版第617 | 无码人妻丰满熟妇bbbb| 神马久久午夜| 久久99嫩草熟妇人妻蜜臀| 五月天成人小说| 国产精品美女在线观看| 亚洲熟妇在线观看| 激情婷婷av| 精品乱码一区| 国产激情综合五月久久| 国产做受91一片二片老头| 国产一| 欧美日韩一级A片| 一插菊花综合| 亚洲欧美久久久| 精品无码AV一区二区三区| 爱爱天堂| 亚洲精品乱码久久久久久蜜桃欧美| 亚洲天媒在线播放| 成人三级电影| 亚洲欧美国产精品专区久久| 残忍另类BBWBBWBBW| AV中文字幕在线播放| 五月婷婷六月丁香综合| 成人V| 国产aaaaaa| 激情小视频在线观看| 高清无码久久| 刘玥精品A片在线观看| 北条麻妃在线播放一区| 欧美韩日高清精彩视频| 欧美日韩一| www.99| 亚洲无码高清视频在线观看| 国产一级片免费观看| 国产一级A片久久久免费看快餐| 午夜精品视频在线观看| 毛片中文字幕| 91狠狠色丁香婷婷综合久久精品| 欧美日韩小电影| 亚洲AV无码国产精品久久不卡| 黄色视频在线观看地址| 在线免费观看av网站| 成人做爰黄级A片免费看土方| 在线成人视频网站大香蕉在线网站| 日韩人妻电影| 亚洲精品乱码久久久久久按摩观 | 免费在线观看黄色视频网站| 91人妻中文字幕在线精品| 无码人妻丰满熟妇| 啪啪网站免费| 成人精品影视| 91久久国产综合| 青青草亚洲| 国产无码Av| 丁香色色网| 91亚洲免费| 操屄视频在线| AV无码观看| 国产—a毛—a毛A免费看图| 国产成人无码免费| 小泬BBBBBB免费看| 操欧美美女| 天天操夜| 中文无码电影| 成人在线超碰| 成人无码区免费A片| 三级片小说| 骚逼综合| 国模吧一区| 三级片无码在线播放| 成年人黄色片| 亚洲精品视频无码| 国产中文字幕在线播放| 日韩AV电影在线观看| 欧洲一级片| 日韩激情| 欧美激情综合| 国产操| 亚洲黄色av| 日韩中文字幕无码| 操你啦无码日韩| 一级色色片| 日韩无码人妻一区二区三区| 久久精彩| 亚州精品成人片| 亚洲精品成人无码熟妇在线 | 五月天亚洲激情| 婷婷激情五月天丁香| 免费无码一区二区三区四区五区 | 五月丁香花婷婷| 青草网在线观看| 日日视频| 亚洲Av无码午夜国产精品色软件| 日韩A片免费观看| 成人精品一区二区无码| 91人人精品| 青青色视频| 一本无码视频| 一级黄色电影免费观看| 国产一卡二卡在线观看| 亚洲无码制服| 丁香五月婷婷色| 国产久久这里只有精品视频| 天天干天天爽| 韩国日本久久| 亚洲国产精品欧美久久| 中文字幕AV免费观看| 激情日韩| 国产在线97| 久久综合操| 国产卡一卡二| 九九碰九九爱97超碰| 伊人久久av| 国产精品A片守望| 国产做受91一片二片老头| 青娱乐国产| 91爱爱| 中国免费看片| 中文无码字幕视频| 丁香五月成人网| 香蕉午夜视频| 婷婷综合久久| wwwxxx18| 强伦轩人妻一区二区电影| 婷婷天堂| 一级大黄色毛片| 国产女人18毛片水真多18| 一本色道久久综合亚洲怎么玩| 男女91视频| 久久偷看各类wc女厕嘘嘘偷窃| 日韩黄网| 亚洲色欲色欲www在线成人网| 国产在线第一页| 日本在线播放| 国产精品视频瘾无码| 偷拍内射| 日欧内射| 又大又粗又爽| 俺去| 午夜伊人| 欧美一区二区三区激情| 成人网站视频| 动漫啪啪视频| 911精品人妻一区二区三区A片| 免费在线看黄网站| 高清无码三级片| 欧美成人片免费看| 国产wwwww| 老太老熟女城中层露脸60| av在线免费观看网址| 日韩精品中文字幕无码| 日韩电影免费在线观看中文字幕| 在线成人视频网站大香蕉在线网站| 成人国产片女人爽到高潮| 黄色高清视频在线观看| 日韩黄色电影视频| 黄色A片电影| 国产精品视频免费看| 中文无码熟妇人妻AV在线| 北条麻妃一区二区三区-免费免费高清观看 | 97无码精品人妻一区二区三区| 人人看人人草| 欧美一区二区三区在线观看| 欧美视频综合| 男人的天堂视频在线| 国产91视频在线观看| 久久精品亚洲无码| 国产欧美自拍| 天堂91| 欧美老妇另类BBwBBw| 欧美日韩亚洲天堂| 91麻豆精品91久久久ios版| 免费A级毛片在线播放不收费| 一级操逼黄色视频| 粉嫩99国产精品久久久久久人妻| 久久久xxx| 精品视频免费观看| 日本无码嫩草一区二区| av人人| 中文人妻无码| 亚洲女人在线| 黄页网站在线免费观看| 欧美性视频网站| 黄色一级电影网| 中文字幕日本无码| 日韩黄色小视频| 国内精品一区二区| AV资源网站在线| 2025无码视频| AV片在线免费观看| www.骚逼| 少妇熟女视频一区二区三区| 亚洲免费人妻| 国产综合久久久7777777| 韩国无码精品| 亚洲一区色| www.199麻豆在线观看网站| 日本一本不卡| 99久久久成人国产精品| A一级黄片| 亚洲欧美久久久| 人人操人人草| 日韩在线免费视频| 日韩在线观看免| 潮喷在线观看| 亚洲无码AV电影| 黄色福利网址| 操操综合| 九九热精| 欧美偷拍| 青娱乐成人在线视频| 精品人妻午夜| 欧美另类视频| 婷婷五月在线播放| 真实白嫖91探花无码| 久久久久久高清毛片一级| 麻豆91麻豆国产传媒| 色色在线观看| 国产aa片| 成人一级电影| 国产女同在线观看| 欧美熟妇BBB搡BBB| 99视频在线观看免费| 青草碰| 人操人碰| 免费黄片网站在线观看| 木下凛凛子AV888AV在线观看 | 亚洲色图图片| 国产欧美在线免费观看| A黄色视频| 波多野结衣AV在线播放| 国产AV日韩| 欧美一级日韩| 四虎一区| 综合网视频| 成人免费看A片| 亚洲天堂一区二区| 波多野结衣vs黑人巨大| 亚洲无码内射| 无码中文字幕网站| 狼人狠干| 麻豆精品一区二区| 大地二中文在线观看免费鲁大师 | 亚洲高清AV| 在线观看国产区| 亚洲黄色免费看| 一本色道久久综合亚洲二区三区| 日韩中文字幕一区二区三区| 国内精品内射| 麻豆人妻| 在线观看成人三级片| 五月天久久| 黄色视频网站免费| 动漫人物插画动漫人物的视频软件| 黄片免费播放| 无码国产精品一区二区| 三级成人免费| 一区二区三区在线免费观看| 亚洲无吗在线视频| BBB搡BBB搡BBB搡BBB| 欧美亚韩一区二区三区| 亚洲国产高清国产精品| 青娱乐国产视频| 日韩一级在线| 午夜人妻AV| H片在线免费观看| 中文原创麻豆传媒md0052| 国产乱伦中文字幕| 欧美三级片在线| 在线无码视频观看| 操逼在线免费观看| 国产午夜精品视频| 五月天乱伦小说| 天天操夜夜爽| 亚洲无码在线观看网站| 欧美综合在线观看| 国产伦子伦一级A片免费看老牛| 91无码AⅤ在线| 日韩一级片在线观看| 男女成人视频| 黄色成人片| 人人艹人人艹| 亚洲人妻无码视频| 午色婷婷国产无码| 欧美亚洲日韩一区二区| 在线观看黄色片| 蜜桃人妻无码AV天堂二区| 美女网站黄色| 四川BBB嫩BBBB爽BBBB| 99色综合| 天堂无吗| 啪啪啪免费| 欧美午夜精品一区二区蜜桃| 熟女国产| 日逼网站免费观看| 久操| 一边做一边说国语对白| 做爱网站免费| 一级乱伦网站| 天天色天天日天天干| 搞搞网日本9| 中文字幕第10页| 日韩欧美综合| 日韩无码AV一区二区三区| 国产av激情| 国产www视频| 一本色道久久综合亚洲精品久久| av天堂电影网| 蜜臀AV成人精品| 91人妻日韩人妻无码专区精品| 国产99久久九九精品无码免费| 天天干天天干| 日本一本在线| 91av在线播放| 成人网站欧美| 亚洲激情在线| 亚洲欧洲日韩综合| 69av在线| 日本无码网站| 五月天激情网站| 动漫一区二区| 超碰超碰| 男女拍拍网站| 欧美九九九| 91麻花| 91九色蝌蚪| 欧美国产第一页| 一级成人片| 国产欧美日韩在线播放| 大香蕉精品| 人与禽一级A片一区二区三区| 超碰在线观看97| 91乱| 天天操夜夜骑| 伊人操逼| 日韩欧美中文| 一本色道久久综合无码人妻软件 | 国产精品久久久久久最猛| 毛片3| 国产精品免费人成网站酒店| 嫩小槡BBBB槡BBBB槡漫画| 中文字幕AV免费观看| 色色免费视频| 国产思思99re99在线观看| 四虎黄色网| 久久久女人| 无码AV在线播放| 成人动漫| 大香蕉啪啪| 99久久夜色精品国产亚洲| 大鸡巴午夜爽视频电影| 人人香蕉| 亚洲欧美日韩性爱| 99国产精品免费视频观看8| 俺也来俺也去WWW色| 北条麻妃网址| 五月天婷婷在线视频| 久久久久久久国产精品| 秋霞福利影院| 无码精品一区| 玖玖资源站中文字幕| 久久这里有精品视频| 最新av| 日韩激情视频在线观看| 第四色大香蕉| 天堂A片| 久久国产乱子伦精品免费女,网站| 国产内射网站| 欧美亚洲成人精品| aaa免费视频| 爽爽午国产浪潮AV性色www| 日韩爱爱视频| 国产无码AV成在线| 国产精品乱伦| 国产在线观看免费| 在线观看免费高清无码| 亚洲,制服,综合,中文| 91爱爱爱爱| 久久亚洲视频| 欧美内射网站| 欧美一级AAA大片免费观看| 丰满少妇在线观看网站| 大香蕉伊人色| 国产一区二区三区在线| A片黄色电影网站| 噜噜色av| 男女无码| 91性爱视频在线观看| 日本高清版色视频| 国产激情啪啪| 亚洲中文AV在线| 欧美日韩精品在线观看| 强开小嫩苞一区二区三区网站| 国产熟女一区二区三区五月婷| 91麻豆精品91久久久ios版| 国产一级操逼片| 日韩黄色电影网站| 无码人妻A片一区二区青苹果| 亚洲国产成人va| 91免费国产视频| 日本国产在线视频| 亚洲狠狠| 一道本高清无码视频| 国产又粗又长又硬又大毛苴茸图片| 日韩福利片| 成人免费黄色片| 在线操B视频| 韩日一区二区| AV无码一区二区三区| 成人午夜大片| 西西444www无码精品| 欧美成人精品三级网站| 亚洲高清无码视频| 爱爱视频欧美| 日韩毛片大全| 一区二区三区四区五区六区高清无吗视频| 四季AV一区二区夜夜嗨| 欧美黄色一级网站| 大香蕉综合网| 国产综合久久久7777777| 国产网站视频| 俺来也操逼| 亚洲日韩一级片| 99爱爱视频| 中文字幕av高清片,中文在线观看| 国产精品二区高清在线苍井空 | 综合+夜夜| 欧美第二页| 热久久国产| 免费看无码网站成人A片| 中文字幕+乱码+中文字幕电视剧| 先锋资源国产| 乱伦五月天| 深爱五月激情| 少妇久久久久久久久久| 女人特级毛片18| 亚洲AV毛片| 日韩AV乱伦| 久久精品视频在线免费观看| 在线第一页| AV网站免费在线观看| 蜜乳av红桃嫩久久| 日韩三级视频| 精品成人A片久久久久久不卡三区 免费看成人A片无码照片88hⅤ | 99国产精品久久久久久久成人| 精品国产乱码久久久久夜深人妻| 日韩操操| AV2014天堂网| www.大香蕉伊人| 日韩免费高清| 欧美日比视频| 精品国产女人| 久热只有精品| 国产成人无码A片V99| 午夜久久久久久久久久久久91| 午夜福利在线播放| xiuxiuav| 2025中文字幕| 亚洲视频网站在线观看| av天堂小说网| 欧美日韩免费在线播放电影在线播放电影在线播放电影免费 | 热久久亚洲中文字幕| 国产欧美性爱| 精品久久一区二区三区四区 | 美女免费AV| 人人爽爽人人| 黄色网页在线观看| 日韩小视频在线| 日韩黄色小电影| 精品孕妇一级A片免费看| 亚洲日韩视频在线观看| 国产一二区| av网站免费在线观看| 国产一区二区久久| 国内精品无码| 丁香五月大香蕉| 日本黄色电影在线观看| 国产欧美在线免费观看| 欧美狠狠干| 国产精品一卡二卡| 大香蕉综合视频| 色噜噜网站| 女神思瑞精品一区二区三区| 男女啪啪免费网站| 青草福利在线| 日本一区免费观看| 欧美日韩一级在线观看| 成人二区| 婷婷在线综合| 中文字幕成人A片| 一级片AV| 亚洲AV无码一区毛片AV| 人人操人人操人人| 九九精品久久| a片免费在线| 国产福利电影在线| 开心激情播播网| 无码中文字幕在线观看| 丰满人妻一区二区三区不卡二| 日日摸夜夜| 日韩av综合| 久久黄色毛片| 少妇一区二区三区| 无码乱伦视频| 先锋资源在线视频| 久精久久| 亚州操B| 一级调教看片| 一道本久久| 狼人狠狠干| 国产av一区二区三区四区| 久久免费视频3| 老司机无码| 中文字幕无码不卡| 青青青视频在线| 911精品人妻一区二区三区A片| 日本一级特黄大片AAAAA级| 97桃色| 国产毛片一照区| 成人网视频| 亚洲AV成人精品日韩在线播放| 刘玥一区二区三区| 国产高清无码福利| 午夜一本道| 人人干人人操人人爽| 51乱伦| 久久无码一区二区三区| 8x8x黄色| A级免费毛片| 手机在线操B视频| 污污污污污www在线观看优势| 正在播放亚洲| 日本在线观看| 人人干人人摸人人操| 无码a片| 97在线精品| 好男人WWW社区在线视频夜恋| 欧洲AV片| 无码xx| 日本天堂Tv视频在线观看| 国产黄色A片| 宅男视频| 91在线无码精品秘入口三人 | 美日韩一区二区| 中文字幕av在线播放| 99在线视频免费观看| 男女啪啪动态图| 欧美色国| 成人爽爽视频| 九一国产在线| 日本一区中文字幕| 国产激情精品视频| 日韩图片区小说视频区日| 国产激情久久| www.婷婷五月天| 依人成人| 国产亲子乱XXXXinin| 超碰免费人妻| 日韩欧美人妻| 人人干视频| 高清无码视频免费看| 亚洲综合成人在线| 成人h网站在线观看| 操逼91小视频| 波多野结衣无码高清| 69视频网站| 成人在线小视频| 一区二区三区精品视频| 久久免费视频1| 欧美黄色精品| 国产精品一色哟哟哟| 肏屄视频在线看| 51成人精品午夜福利| 九九热精品视频99| 永久免费看A人片无码精| 91三级片| 草草网| 日韩欧美高清视频| A片视频在线观看| 亚洲欧美视频在线| 国内免费AV| 色呦呦在线| 四虎成人免费视频| 搡老熟女-91Porn| 欧美熟女在线| 夜色88V精品国产亚洲| 激情五月天综合网| 大蕉伊人网| 成人动漫免费观看| 9l视频自拍蝌蚪9l视频成人| 亚洲久久色| 日韩欧美日本| 欧美激情无码炮击| 肉片无遮挡一区二区三区免费观看视频 | 欧美日韩在线视频一区| 五月丁香欧美综合| 大鸡吧操视频| 一级无码免费| 欧一美一婬一伦一区?| 91三级片在线播放| 北条麻妃A片在线播放| 亚洲精品日日夜夜| 成人免费无码A片免费| 蜜桃网站视频| 国产精品视频一区二区三区在线观看| 日本在线一级片| 欧美人妻视频在线| 国产在线欧美在线白浆| 狼人社區91國產精品| 免费18蜜桃久久19| 日韩精品欧美一区二区三区| 强伦轩人妻一区二区三区70后| 伊人毛片| 日本A视频| 成人无码在线观看免费视频| 国产激情在线视频| 亚洲视频在线观看免费| www黄片| 日韩在线一区二区| 亚洲AAA| 亚洲精品综合| 日韩中文字幕在线| 亚洲天媒在线播放| 成人性生活一级片| 在线观看AV91| 欧美AAAAAA视频| 欧美一级操| 青操AV| 国产亚洲99久久精品| 国产一级电影网站| 日韩极品视频在线| 亚洲无码高清电影| AV无码人妻| 亚洲日韩精品成人无码专区AV | 日本三级在线| 综合+夜夜| 91在线精品视频| 日韩性爱网站| 激情淫荡少妇| 天天天天毛片| 三级片视频网站| 日无码| 精品久久三级片| 99久久人妻无码中文字幕系列| 日批免费视频| www久久| 大鸡吧操视频| www三级片| 美女一区| 日韩午夜片| 午夜精品在线观看| 亚洲中文免费| 日韩成人无码电影| 亚洲热视频| 91欧美精品成人综合在线观看| 日本亚洲欧美| 久久av片| 日韩无码中文字| 日狠狠| 99内射| 91香蕉视频18| 黑人AV| 国产黄色AV片| 亚洲国产av一区| 欧美成人毛片一级A片| 成人片免费看| 杨贵妃一级婬片90分钟| 日韩在线视频免费| 今天成全在线观看高清| 久久综合九九| av一区二区三区| 中韩一区二区| 欧美性爱a视频| 日逼免费| 黑人巨大翔田千里AⅤ| 欧美第二页| 不卡视频在线观看| 无码免费在线视频| 欧美成人A片| 91丨豆花丨成人熟女| 免费视频在线观看黄| 日本高清久久| 免费无码一级A片大黄在线观看 | 五月婷婷黄色| 69国产成人精品二区| 手机看片亚洲| 成人A片免费观看| 精品免费国产一区二区三区四区 | 人与禽一级A片一区二区三区| 久久久久久久久久成人永久免费视频 | 中文字幕永久在线观看| 日韩av免费在线观看| 青青草手机视频| 中文字幕三级av片| 久久青草影院| P站免费版-永久免费的福利视频平台| 无码中文在线| 操操干| 啪啪网站免费| 国产精品久久久久久久久免费无码 | 人人摸人人搞| 国产成人精品a区在线观看| 欧美日韩色视频| 另类老妇性BBwBBw图片| 黄片免费看网站| 日本操逼电影| 91久久久久| 欧美色欲| 欧一美一婬一伦一区二区三区自慰国| 黄色福利视频在线观看| 九九久热| 亚洲福利视频网| 视频一区中文字幕| 日韩精品一区二区三区四在线播放| 毛片性爱视屏| 成人做爰黄片视频免费| 蜜芽成人网站| 国产AV一区二区三区精品| 五月婷婷综合网| 日本高清视频网站| 亚洲一区二区视频在线观看| 在线色网站| 国产精品va| 久久性| 欧美老女人操逼群| 亚洲一区视频在线| 91黄色视频在线播放| 午夜福利剧场| 一级A片在线观看| 伊人天天色| 国产一级黄色大片| 精品人妻午夜| 中文字幕人妻丰满熟妇| 亚洲日韩电影| 精品伊人大香蕉| 鲁一鲁在线视频| 黄片无码免费| 日日夜夜av| 在线观看欧美日韩视频| 男人的天堂视频在线观看| 亚洲第一色| 九九热精| 午夜国产| 久久九九免费视频| 秋霞丝鲁片一区二区三区手机在绒免| 欧美日韩成人一区二区三区| 欧美色色色色色色| 一级黄片免费看| 久久99精品久久久久| 免费欧美黄色| 天天骑夜夜操| 亚洲福利电影| www.伊人大香蕉| 乱伦乱码| 香蕉视频亚洲| 中文字幕三区| 国产成人毛片18女人18精品| 99色婷婷| 456亚洲影院| 亚洲成人国产| 中文字幕免费中文| 91九色TS另类国产人妖| 成人做爰100部免费网站| 成人A片视频| 狠狠操狠狠插| 在线免费观看a| 亚洲精品成人7777777| 久久香蕉网| 夜夜天天人人| 日本中文视频| 91AV在线看| 日都一级A片| 综合AV在线| 2018人人操| 国产激情视频在线观看| 国内免费毛片| 五月丁香视频在线观看| 国产香蕉在线| 日韩无码中文字幕| 另类老妇奶性生BBwBBw偷拍| 日本女人牲交视频| 午夜国产在线观看| 国产麻豆精品ThePorn| 日韩欧美一区在线| 老熟女一区二区三区| 国产美女被操| 亚洲一区视频在线| 亚洲AV性爱| 亚洲操逼网站| 91精品国产乱码| 国产成人亚洲综合AV婷婷| 影音先锋日韩资源| 最新中文字幕观看| 激情丁香五月婷婷| 欧美亚洲日韩中文字幕| 亚洲综合五月天婷婷丁香| 欧美熟妇擦BBBB擦BBBB| 国产不卡在线观看| 97超碰大香蕉| 天天干天天色天天射| yw视频在线观看| 青青操B| 久久91人妻无码精品蜜桃HD| 无码一区二区高清| 国产激情片| 亚洲欧洲有码在线| 五月丁香六月色| 东京热无码免费视频| 中文字幕三级av片| 操老女人逼视频| 日韩欧美二区| 欧美激情伊人久久五月天| 久视频在线观看| 91久久| 操逼91小视频| 国产熟女在线| 极品少妇AV| 日韩大片免费观看| 好男人WWW社区在线视频夜恋| 成人A片免费看| 欧美日韩A片欧美日| 激情爱爱网站| 日韩福利在线| 青草网在线观看| 亚洲性爱在线视频| 天天干天天干天天日| 翔田千里53歳在线播放| 亚州天堂网| 国产a级毛片| 狠狠干B| 亚洲性爱一区二区| 巨乳国产一区| 另类老妇极品BBWBBw| 大香蕉网伊人| 干日本少妇| 五月丁香婷婷色色| 欧美成人精品AAA| 精品乱子伦一区二区在线播放| 亚洲精品久久久久avwww潮水| 亚洲天堂自拍| 99久久久精品久久久久久| 亚洲V国产v欧美v久久久久久| 午夜福利高清在线观看| 久久久久亚洲AV无码网影音先锋| 国产在线观看av| 超碰在线观看2407| 怡春院久久| 免费的av| 日韩在线视频第一页| 免费久久久| 日本最新免费二区| 中文字幕一区二区三区在线观看| 伊人亚洲综合| 性欧美日韩| 国产日韩欧美综合在线| 亚洲中文字幕在线观看视频网站 | 在线播放JUY-925被丈夫上司侵犯的第7天 | 色777色|