av素人天堂_free性亚洲_久久亚洲国产视频_国产网红在线_午夜av在线播放_欧美成人精品福利网站_热99在线观看_国产在线观看免费麻豆_日本高清在线观看_亚洲免费网站观看视频

ES6中的異步詳解

眾所周知JS是單線(xiàn)程的,這種設(shè)計(jì)讓JS避免了多線(xiàn)程的各種問(wèn)題,但同時(shí)也讓JS同一時(shí)刻只能執(zhí)行一個(gè)任務(wù),若這個(gè)任務(wù)執(zhí)行時(shí)間很長(zhǎng)的話(huà)(如死循環(huán)),會(huì)導(dǎo)致JS直接卡死,在瀏覽器中的表現(xiàn)就是頁(yè)面無(wú)響應(yīng),用戶(hù)體驗(yàn)非常之差。

因此,在JS中有兩種任務(wù)執(zhí)行模式:同步(Synchronous)和異步(Asynchronous)。類(lèi)似函數(shù)調(diào)用、流程控制語(yǔ)句、表達(dá)式計(jì)算等就是以同步方式運(yùn)行的,而異步主要由setTimeout/setInterval、事件實(shí)現(xiàn)。

傳統(tǒng)的異步實(shí)現(xiàn)

作為一個(gè)前端開(kāi)發(fā)者,無(wú)論是瀏覽器端還是Node,相信大家都使用過(guò)事件吧,通過(guò)事件肯定就能想到回調(diào)函數(shù),它就是實(shí)現(xiàn)異步最常用、最傳統(tǒng)的方式。

不過(guò)要注意,不要以為回調(diào)函數(shù)就都是異步的,如ES5的數(shù)組方法Array.prototype.forEach((ele) => {})等等,它們也是同步執(zhí)行的?;卣{(diào)函數(shù)只是一種處理異步的方式,屬于函數(shù)式編程中高階函數(shù)的一種,并不只在處理異步問(wèn)題中使用。

舉個(gè)栗子?:

// 最常見(jiàn)的ajax回調(diào)
this.ajax('/path/to/api', {
    params: params
}, (res) => {
    // do something...
})

你可能覺(jué)得這樣并沒(méi)有什么不妥,但是若有多個(gè)ajax或者異步操作需要依次完成呢?

this.ajax('/path/to/api', {
    params: params
}, (res) => {
    // do something...
    this.ajax('/path/to/api', {
      params: params
    }, (res) => {
        // do something...
        this.ajax('/path/to/api', {
          params: params
        }, (res) => {
          // do something...
        })
        ...
    })
})

回調(diào)地獄就出現(xiàn)了。。。?

為了解決這個(gè)問(wèn)題,社區(qū)中提出了Promise方案,并且該方案在ES6中被標(biāo)準(zhǔn)化,如今已廣泛使用。

Promise

使用Promise的好處就是讓開(kāi)發(fā)者遠(yuǎn)離了回調(diào)地獄的困擾,它具有如下特點(diǎn):

  1. 對(duì)象的狀態(tài)不受外界影響:
    • Promise對(duì)象代表一個(gè)異步操作,有三種狀態(tài):Pending(進(jìn)行中)、Resolved(已完成,又稱(chēng) Fulfilled)和Rejected(已失?。?/li>
    • 只有異步操作的結(jié)果,可以決定當(dāng)前是哪一種狀態(tài),任何其他操作都無(wú)法改變這個(gè)狀態(tài)。
  2. 一旦狀態(tài)改變,就不會(huì)再變,任何時(shí)候都可以得到這個(gè)結(jié)果。
    • Promise對(duì)象的狀態(tài)改變,只有兩種可能:從Pending變?yōu)镽esolved和從Pending變?yōu)镽ejected。
    • 只要這兩種情況發(fā)生,狀態(tài)就凝固了,不會(huì)再變了,會(huì)一直保持這個(gè)結(jié)果。
    • 如果改變已經(jīng)發(fā)生了,你再對(duì)Promise對(duì)象添加回調(diào)函數(shù),也會(huì)立即得到這個(gè)結(jié)果。
    • 這與事件(Event)完全不同,事件的特點(diǎn)是,如果你錯(cuò)過(guò)了它,再去監(jiān)聽(tīng),是得不到結(jié)果的。
  3. 一旦聲明Promise對(duì)象(new Promise或Promise.resolve等),就會(huì)立即執(zhí)行它的函數(shù)參數(shù),若不是函數(shù)參數(shù)則不會(huì)執(zhí)行
this.ajax('/path/to/api', {
    params: params
}).then((res) => {
    // do something...
    return this.ajax('/path/to/api', {
        params: params
    })
}).then((res) => {
    // do something...
    return this.ajax('/path/to/api', {
        params: params
    })
})
...

看起來(lái)就直觀(guān)多了,就像一個(gè)鏈條一樣將多個(gè)操作依次串了起來(lái),再也不用擔(dān)心回調(diào)了~?

同時(shí)Promise還有許多其他API,如Promise.all、Promise.race、Promise.resolve/reject等等(可以參考阮老師的文章),在需要的時(shí)候配合使用都是極好的。

API無(wú)需多說(shuō),不過(guò)這里我總結(jié)了一下自己之前使用Promise踩到的坑以及我對(duì)Promise理解不夠透徹的地方,希望也能幫助大家更好地使用Promise:

1.then的返回結(jié)果:我之前天真的以為then要想鏈?zhǔn)秸{(diào)用,必須要手動(dòng)返回一個(gè)新的Promise才行

Promise.resolve('first promise')
.then((data) => {
    // return Promise.resolve('next promise')
    // 實(shí)際上兩種返回是一樣的
    return 'next promise'
})
.then((data) => {
    console.log(data)
})

總結(jié)如下:

  • 如果then方法中返回了一個(gè)值,那么返回一個(gè)“新的”resolved的Promise,并且resolve回調(diào)函數(shù)的參數(shù)值是這個(gè)值
  • 如果then方法中拋出了一個(gè)異常,那么返回一個(gè)“新的”rejected狀態(tài)的Promise
  • 如果then方法返回了一個(gè)未知狀態(tài)(pending)的Promise新實(shí)例,那么返回的新Promise就是未知狀態(tài)
  • 如果then方法沒(méi)有返回值時(shí),那么會(huì)返回一個(gè)“新的”resolved的Promise,但resolve回調(diào)函數(shù)沒(méi)有參數(shù)

2.一個(gè)Promise可設(shè)置多個(gè)then回調(diào),會(huì)按定義順序執(zhí)行,如下

const p = new Promise((res) => {
  res('hahaha')
})
p.then(console.log)
p.then(console.warn)

這種方式與鏈?zhǔn)秸{(diào)用不要搞混,鏈?zhǔn)秸{(diào)用實(shí)際上是then方法返回了新的Promise,而不是原有的,可以驗(yàn)證一下:

const p1 = Promise.resolve(123)
const p2 = p1.then(() => {
    console.log(p1 === p2)
    // false
})

3.thencatch返回的值不能是當(dāng)前promise本身,否則會(huì)造成死循環(huán)

const promise = Promise.resolve()
.then(() => {
    return promise
})

4.then或者catch的參數(shù)期望是函數(shù),傳入非函數(shù)則會(huì)發(fā)生值穿透

Promise.resolve(1)
  .then(2)
  .then(Promise.resolve(3))
  .then(console.log)
// 1

5.process.nextTickpromise.then都屬于microtask,而setImmediate、setTimeout屬于macrotask

process.nextTick(() => {
  console.log('nextTick')
})
Promise.resolve()
  .then(() => {
    console.log('then')
  })
setImmediate(() => {
  console.log('setImmediate')
})
console.log('end')
// end nextTick then setImmediate

有關(guān)microtaskmacrotask可以看這篇文章,講得很細(xì)致。

但Promise也存在弊端,那就是若步驟很多的話(huà),需要寫(xiě)一大串.then(),盡管步驟清晰,但是對(duì)于我們這些追求極致優(yōu)雅的前端開(kāi)發(fā)者來(lái)說(shuō),代碼全都是Promise的API(then、catch),操作的語(yǔ)義太抽象,還是讓人不夠滿(mǎn)意呀~

Generator

Generator是ES6規(guī)范中對(duì)協(xié)程的實(shí)現(xiàn),但目前大多被用于異步模擬同步上了。

執(zhí)行它會(huì)返回一個(gè)遍歷器對(duì)象,而每次調(diào)用next方法則將函數(shù)執(zhí)行到下一個(gè)yield的位置,若沒(méi)有則執(zhí)行到return或末尾。

依舊是不再贅述API,對(duì)它還不了解的可以查閱阮老師的文章。

通過(guò)Generator實(shí)現(xiàn)異步:

function* main() {
   const res = yield getData()
   console.log(res)
}
// 異步方法
function getData() {
   setTimeout(() => {
       it.next({
           name: 'yuanye',
           age: 22
       })
   }, 2000)
}
const it = main()
it.next()

先不管下面的next方法,單看main方法中,getData模擬的異步操作已經(jīng)看起來(lái)很像同步了。但是追求完美的我們肯定是無(wú)法忍受每次還要手動(dòng)調(diào)用next方法來(lái)繼續(xù)執(zhí)行流程的,為此TJ大神為社區(qū)貢獻(xiàn)了co模塊來(lái)自動(dòng)化執(zhí)行Generator,它的實(shí)現(xiàn)原理非常巧妙,源碼只有短短的200多行,感興趣可以去研究下。

const co = require('co')

co(function* () {
  const res1 = yield ['step-1']
  console.log(res1)
  // 若yield后面返回的是promise,則會(huì)等待它resolved后繼續(xù)執(zhí)行之后的流程
  const res2 = yield new Promise((res) => {
    setTimeout(() => {
      res('step-2')
    }, 2500)
  })
  console.log(res2)
  return 'end'
}).then((data) => {
  console.log('end: ' + data)
})

這樣就讓異步的流程完全以同步的方式展示出來(lái)啦?~

Async/Await

ES7標(biāo)準(zhǔn)中引入的async函數(shù),是對(duì)js異步解決方案的進(jìn)一步完善,它有如下特點(diǎn):

  1. 內(nèi)置執(zhí)行器:不用像generator那樣反復(fù)調(diào)用next方法,或者使用co模塊,調(diào)用即會(huì)自動(dòng)執(zhí)行,并返回結(jié)果
  2. 返回Promise:generator返回的是iterator對(duì)象,因此還不能直接用then來(lái)指定回調(diào)
  3. await更友好:相比co模塊約定的generator的yield后面只能跟promise或thunk函數(shù)或者對(duì)象及數(shù)組,await后面既可以是promise也可以是任意類(lèi)型的值(Object、Number、Array,甚至Error等等,不過(guò)此時(shí)等同于同步操作)

進(jìn)一步說(shuō),async函數(shù)完全可以看作多個(gè)異步操作,包裝成的一個(gè)Promise對(duì)象,而await命令就是內(nèi)部then命令的語(yǔ)法糖。

改寫(xiě)后代碼如下:

async function testAsync() {
  const res1 = await new Promise((res) => {
    setTimeout(() => {
      res('step-1')
    }, 2000)
  })
  console.log(res1)
  const res2 = await Promise.resolve('step-2')
  console.log(res2)
  const res3 = await new Promise((res) => {
    setTimeout(() => {
      res('step-3')
    }, 2000)
  })
  console.log(res3)
  return [res1, res2, res3, 'end']
}

testAsync().then((data) => {
  console.log(data)
})

這樣不僅語(yǔ)義還是流程都非常清晰,即便是不熟悉業(yè)務(wù)的開(kāi)發(fā)者也能一眼看出哪里是異步操作。

總結(jié)

本文匯總了當(dāng)前主流的JS異步解決方案,其實(shí)沒(méi)有哪一種方法最好或不好,都是在不同的場(chǎng)景下能發(fā)揮出不同的優(yōu)勢(shì)。而且目前都是Promise與其他兩個(gè)方案配合使用的,所以不存在你只學(xué)會(huì)async/await或者generator就可以玩轉(zhuǎn)異步。沒(méi)準(zhǔn)以后又會(huì)出現(xiàn)一個(gè)新的方案,將已有的這幾種方案顛覆呢 ~

說(shuō)實(shí)話(huà),學(xué)過(guò)后端的人玩JavaScript會(huì)陷入一種困境,如果讓程序員自己處理可能會(huì)更符合邏輯,比如引入線(xiàn)程之類(lèi)的,不過(guò)優(yōu)化起來(lái)又是一個(gè)問(wèn)題了。。。

來(lái)源:https://blog.markeyme.cn/2018/06/09/ES6%E5%BC%82%E6%AD%A5%E6%96%B9%E5%BC%8F%E5%85%A8%E9%9D%A2%E8%A7%A3%E6%9E%90/

THE END
av素人天堂_free性亚洲_久久亚洲国产视频_国产网红在线_午夜av在线播放_欧美成人精品福利网站_热99在线观看_国产在线观看免费麻豆_日本高清在线观看_亚洲免费网站观看视频
黄色资源在线观看| av免费在线观看网址| 国产高清一区| 亚洲一区日韩精品中文字幕| 亚洲免费福利视频| 国产九九在线| 精品一二三四| 国产精久久久久| h片精品在线观看| 一区二区不卡在线| 国产综合成人久久大片91| 91精品国产欧美日韩| 日韩精品免费视频一区二区三区| 国产区在线看| 欧美国产一区视频在线观看| 精品日韩av一区二区| av免费网站在线| 亚洲视频日韩| 欧美日韩综合色| 一区二区在线高清视频| 日韩视频国产视频| 精品调教chinesegay| 国产日韩中文字幕| 国产字幕在线看| 国产一区 二区 三区一级| 久久久精品日韩欧美| 天天综合天天做| 欧美亚洲国产日韩| 亚洲三级免费看| 中文字幕在线看视频国产欧美| 亚洲天堂国产视频| 日韩欧美国产高清91| 亚洲综合日韩欧美| 欧洲一级精品| 国产欧美日韩三级| 欧美日韩综合不卡| 影音先锋一区二区资源站| 在线一区免费| 粉嫩喷白浆久久| 午夜精品免费视频| 久久精品免费看| 亚洲va韩国va欧美va精品| 日韩欧美高清在线视频| 欧美不卡一二三| 中文字幕在线日韩| 一区二区在线看| 91精品国产免费久久综合| 久久精品国产91精品亚洲| 日韩免费看网站| 91精品视频观看| 免费精品国产自产拍在| 最近中文av字幕在线中文| 91精品久久久久久久久久入口| 91精品在线免费观看| 精品乱人伦一区二区三区| 91九色在线播放| 国产欧美日韩亚洲| 日韩国产欧美在线视频| 一级片免费在线播放| 一级日韩一级欧美| 麻豆一区二区99久久久久| 久久麻豆视频| 国产天堂素人系列在线视频| 欧美 日韩 国产 高清| 亚洲国产无线乱码在线观看| 久久久综合av| 日韩精品高清不卡| 日韩av综合在线观看| 欧美日韩三级在线| 蜜臀91精品国产高清在线观看| 一区二区不卡在线| 99久久久精品免费观看国产| 国产色在线 com| 在线视频不卡一区二区| 国产网站av| www.xxxx精品| 中文字幕第一页在线| 亚洲一区视频在线观看视频| 91九色在线看| 日韩欧美中文| 国产亚洲人成a一在线v站| 精品日韩视频| 国产亚洲短视频| 欧美久久久网站| 日韩一级在线免费观看| 中文字幕国产日韩| 精品中文字幕在线| 欧美日韩久久不卡| 国产高清精品在线| 美日韩精品免费视频| 欧美日韩日本视频| 日韩高清在线不卡| 国产欧美日韩在线播放| 国产福利免费在线观看| 国产免费不卡av| 欧美日韩99| 婷婷中文字幕综合| 国产男女av| 国产小视频免费在线网址| 精品欧美日韩在线| a天堂中文在线官网在线| 成人a在线视频免费观看| 精品精品久久| 日韩中文字幕在线视频播放| 最近中文字幕在线中文高清版| 久久精品夜夜夜夜久久| 欧美日韩综合视频网址| 欧美日韩国产高清视频| 久久精品最新免费国产成人| 国产裸舞福利在线视频合集| 亚洲va久久久噜噜噜久久| 国产午夜精品一区二区三区视频| 亚洲成av人片一区二区密柚| 欧美日韩国产观看视频| 亚洲一区导航| 亚洲免费视频一区| 亚洲免费婷婷| 亚洲福利视频在线| 91亚洲欧美| 日韩中文欧美在线| 午夜视频在线观看一区| 婷婷久久综合网| 日韩一级免费在线观看| 玖玖在线免费视频| 久久综合九色欧美综合狠狠| 亚洲欧美韩国综合色| 国产高清在线观看| 欧美日韩国产免费观看| 日韩欧美三级在线| 国产欧美日韩亚州综合| 国产福利久久久| 亚洲国产午夜精品| 在线不卡日本| 日韩精品视频在线看| 91精品国产综合久久香蕉最新版| 国产在线精品国自产拍免费| 日韩色在线观看| 欧美日韩午夜在线| 在线观看一区| 日韩一级中文字幕| 中文字幕精品在线播放| 精品免费视频| 免费在线视频一级不卡| 成人a在线视频免费观看| 成人h视频在线观看| 一区精品在线播放| 国产在线一区二区视频| 欧美日韩精品在线播放| 91久久久精品国产| 中文字幕精品一区二区三区在线| 欧美日韩国产综合视频在线观看| 91久久精品国产91久久| 一区二区三区在线|网站| 久久精品视频免费看| 国产无套粉嫩白浆在线2022年| 日韩亚洲欧美中文三级| 一区二区在线观看不卡| 在线精品视频免费播放| av免费在线播放| 国产一级免费在线观看| 在线观看国产福利视频| aaa欧美日韩| 1区2区在线| 视频一区二区国产| 97最新国自产拍视频在线完整在线看| 二区中文字幕| 成年人黄国产| 91亚洲国产| 国产日韩精品视频| 欧美日韩在线不卡视频| 国产日韩精品久久久| 亚洲国产午夜精品| 91精品国产自产在线观看永久∴| 国产日韩中文字幕在线| 色综合久久六月婷婷中文字幕| 国产一区久久久| 午夜一区二区三区免费| 999精品色在线播放| 日韩视频 中文字幕| 日韩亚洲欧美中文高清在线| 国产区在线看| 在线视频你懂得一区| 国产嫩草影院久久久久| 中文精品在线观看| 精品极品三级久久久久| 欧美日韩高清不卡| 国产激情在线观看| 日韩欧美中文字幕在线视频| 日韩欧美在线中字| 中文字幕国产欧美| 91午夜在线| 日韩av一区二| 日韩www在线| 久久精品在线免费观看| 亚洲三级网站| 日韩欧美中文字幕精品| 欧美日韩在线视频首页| 亚洲高清在线观看一区| 日本熟女一区二区| 中文字幕亚洲区| 国产69精品久久app免费版| 欧美日韩中文字幕日韩欧美| 日韩欧美国产综合| 久久69成人| 欧美三级三级三级爽爽爽| av手机天堂| 日韩午夜中文字幕| 91精品久久久久| 蜜臀国产一区| 精品国产31久久久久久| 国产视频1区2区| 日韩va亚洲va欧洲va国产| 欧美三级日本三级少妇99| 自拍日韩亚洲一区在线| 一区二区在线看| 一区二区视频国产| 国产乱国产乱老熟300部视频| 国产福利精品导航| 一区二区三区鲁丝不卡| 欧美日韩一二三| 日韩av一区二区在线观看| 欧美日韩不卡在线视频| 91精品国产综合久久香蕉最新版| 国产偷国产偷亚洲清高网站| 欧美日韩中文字幕视频| 欧美日韩在线网站| 欧美日韩一级视频| 日韩欧美中文视频| 五月天久久比比资源色| 日韩欧美亚洲视频| 亚洲a级在线播放观看| 欧美日韩性视频在线| 欧美黄页在线免费观看| 久久久综合av| 久久久精品国产免费观看同学| 国产在线观看色| 亚洲中文字幕在线一区| 精品色蜜蜜精品视频在线观看| 午夜精品免费视频| 国产一区不卡精品| 国产乱国产乱老熟300部视频| 一区精品在线播放| 欧美日韩久久不卡| a天堂中文在线官网在线| 激情婷婷亚洲| 久草亚洲一区| 久久精品在线免费观看| 久久久91精品国产| 欧美乱大交xxxxx免费| 国产福利精品导航| 国产一级在线| 中文亚洲免费| 日韩欧美在线不卡| 在线日韩中文字幕| 中文字幕在线观看视频www| 91精品蜜臀在线一区尤物| 日韩欧美高清在线| 日韩欧美国产免费| 国产福利在线播放| 69堂精品视频在线播放| 日韩欧美综合视频| 五月综合激情日本mⅴ| 欧美日韩在线网站| 欧美高清视频一区二区三区| 欧美日韩国产免费观看视频| 欧美不卡视频| 香蕉精品久久| 中文字幕日韩欧美在线视频| 日韩在线视频在线观看| 欧美日韩亚洲系列| 精品成人久久久| 国产成人精品网址| 亚洲高清视频一区| 欧美日韩中文另类| 日韩国产欧美亚洲| 欧美日韩精品免费在线观看视频| 欧美日韩在线精品成人综合网| 日韩在线观看视频一区二区| 国产不卡一区二区在线观看| 亚洲va韩国va欧美va精品| 欧美 中文字幕| 国产香蕉精品视频| 国产欧美日韩久久| 欧美xxxx中国| 欧美 中文字幕| 欧美不卡视频一区| 亚洲日本欧美日韩高观看| www.久久久精品| 日韩欧美成人一区二区三区| 在线日韩欧美| 日韩一级在线视频| 国产欧美久久久精品免费| 欧美大片在线观看一区| 中文字幕在线中文字幕二区| 国产欧美日韩综合精品| 91久久大香伊蕉在人线| 91精品啪在线观看国产60岁| av不卡免费看| 国产欧美日韩精品高清二区综合区| 在线国产三级| 欧美日韩成人综合| 久久久99久久精品欧美| 国产欧美日韩中文久久| 日韩视频专区| 欧美日韩国产系列| 欧美国产91| 欧美日韩国产不卡在线看| 第一页在线观看| 国产69精品久久久久孕妇国产69久久| 欧美日韩国产第一页| 久久精品黄色片| 亚洲深夜福利| 欧美日韩中文字幕精品| 91精品国产丝袜白色高跟鞋| 美日韩精品免费视频| 日韩中文在线中文网三级| 欧美日韩视频网站| 中文字幕亚洲二区| 国产午夜精品久久| 欧美一级免费看| 日韩欧美在线不卡| 拍真实国产伦偷精品| 在线观看91精品国产入口| 亚洲综合视频一区| 在线一区二区三区精品| 久久欧美中文字幕| 国产黄色精品| 亚洲a中文字幕| 国产欧美日韩综合精品| 欧美日韩免费视频| 中文字幕 亚洲视频| 中文字幕精品在线| 国产欧美日韩视频在线| 亚洲第一视频网站| 久久精品电影| 欧美不卡视频一区发布| 国产不卡一区| 国产精品一区二三区| 日韩视频在线免费播放| 久久99久久99精品中文字幕| 日本视频久久久| 免费日韩精品中文字幕视频在线| 欧美日韩人人澡狠狠躁视频| 国产无遮挡在线视频免费观看| av免费观看国产| 免费在线视频一级不卡| 亚洲女同中文字幕| 国产黄在线观看| 国产xxx在线| 欧美高清一级片在线| 国产又粗又猛又爽又黄91精品| 成人福利一区| 久久久久久欧美| 精品av中文字幕在线毛片| 亚洲va中文字幕| 欧美日韩国产一二三| 国产中文伊人| 亚洲美女视频一区| 伊人网站在线| 午夜私人影院在线观看| 日韩欧美国产成人精品免费| 欧美日韩亚洲综合在线| 国产成人精品综合久久久| 国产在线导航| 黄色国产网站在线播放| 欧美日韩亚洲不卡| 欧美日韩在线视频一区| 中文字幕在线亚洲| 日韩精品三级| 中文字幕欧美日韩在线| 欧美日本精品在线| 天堂在线www天堂中文在线| 国产视频一区三区| 日韩精品高清不卡| 日韩精品在线第一页| 日本xxxwww免费视频| 亚洲精华国产欧美| 国产一级免费看| 黄色一区二区视频| 精品在线一区二区三区| 欧美亚洲国产激情| 久久精品女人| 精品欧美不卡一区二区在线观看| 婷婷精品进入| 最近中文字幕日韩精品| 亚洲女人天堂色在线7777| 中文官网资源新版中文第二页在线观看| 欧美日韩综合在线免费观看| 国产一级一片免费播放| 久久久水蜜桃| 亚洲女人天堂a在线播放| 日韩在线视频一区| 日韩精品在线免费播放| 91午夜在线| 日韩在线中文| 中文字幕久精品免费视频| 在线视频国内一区二区| 日韩美女视频一区二区在线观看| 一区二区不卡视频在线观看| 亚洲欧美小说国产图片|