日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

RxJS switchMap, mergeMap, concatMap,exhaustMap 的比较

發布時間:2023/12/19 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RxJS switchMap, mergeMap, concatMap,exhaustMap 的比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:Comprehensive Guide to Higher-Order RxJs Mapping Operators: switchMap, mergeMap, concatMap (and exhaustMap)

我們日常發現的一些最常用的 RxJs 操作符是 RxJs 高階映射操作符:switchMap、mergeMap、concatMap 和exhaustMap。

例如,我們程序中的大部分網絡調用都將使用這些運算符之一完成,因此熟悉它們對于編寫幾乎所有反應式程序至關重要。

知道在給定情況下使用哪個運算符(以及為什么)可能有點令人困惑,我們經常想知道這些運算符是如何真正工作的,以及為什么它們會這樣命名。

這些運算符可能看起來不相關,但我們真的很想一口氣學習它們,因為選擇錯誤的運算符可能會意外地導致我們程序中的微妙問題。

Why are the mapping operators a bit confusing?

這樣做是有原因的:為了理解這些操作符,我們首先需要了解每個內部使用的 Observable 組合策略。

與其試圖自己理解switchMap,不如先了解什么是Observable切換; 我們需要先學習 Observable 連接等,而不是直接深入 concatMap。

這就是我們在這篇文章中要做的事情,我們將按邏輯順序學習 concat、merge、switch 和exhaust 策略及其對應的映射運算符:concatMap、mergeMap、switchMap 和exhaustMap。

我們將結合使用 marble 圖和一些實際示例(包括運行代碼)來解釋這些概念。

最后,您將確切地知道這些映射運算符中的每一個是如何工作的,何時使用,為什么使用,以及它們名稱的原因。

The RxJs Map Operator

讓我們從頭開始,介紹這些映射運算符的一般作用。

正如運算符的名稱所暗示的那樣,他們正在做某種映射:但究竟是什么被映射了? 我們先來看看 RxJs Map 操作符的彈珠圖:

How the base Map Operator works

使用 map 運算符,我們可以獲取輸入流(值為 1、2、3),并從中創建派生的映射輸出流(值為 10、20、30)。

底部輸出流的值是通過獲取輸入流的值并將它們應用到一個函數來獲得的:這個函數只是將這些值乘以 10。

所以 map 操作符就是映射輸入 observable 的值。 以下是我們如何使用它來處理 HTTP 請求的示例:

const http$ : Observable<Course[]> = this.http.get('/api/courses');http$.pipe(tap(() => console.log('HTTP request executed')),map(res => Object.values(res['payload']))).subscribe(courses => console.log("courses", courses));

在這個例子中,我們正在創建一個 HTTP observable 來進行后端調用,我們正在訂閱它。 observable 將發出后端 HTTP 響應的值,它是一個 JSON 對象。

在這種情況下,HTTP 響應將數據包裝在有效負載屬性中,因此為了獲取數據,我們應用了 RxJs 映射運算符。 然后映射函數將映射 JSON 響應負載并提取負載屬性的值。

既然我們已經回顧了基本映射的工作原理,現在讓我們來談談高階映射。

What is Higher-Order Observable Mapping?

在高階映射中,我們不是將像 1 這樣的普通值映射到另一個像 10 這樣的值,而是將一個值映射到一個 Observable 中!

結果是一個高階的 Observable。 它只是一個 Observable,但它的值本身也是 Observable,我們可以單獨訂閱。

這聽起來可能有些牽強,但實際上,這種類型的映射一直在發生。 讓我們舉一個這種類型映射的實際例子。 假設例如,我們有一個 Angular Reactive Form,它通過 Observable 隨時間發出有效的表單值:

@Component({selector: 'course-dialog',templateUrl: './course-dialog.component.html' }) export class CourseDialogComponent implements AfterViewInit {form: FormGroup;course:Course;@ViewChild('saveButton') saveButton: ElementRef;constructor(private fb: FormBuilder,private dialogRef: MatDialogRef<CourseDialogComponent>,@Inject(MAT_DIALOG_DATA) course:Course) {this.course = course;this.form = fb.group({description: [course.description, Validators.required],category: [course.category, Validators.required],releasedAt: [moment(), Validators.required],longDescription: [course.longDescription,Validators.required]});} }

Reactive Form 提供了一個 Observable this.form.valueChanges,它在用戶與表單交互時發出最新的表單值。 這將是我們的源 Observable。

我們想要做的是在這些值隨著時間的推移發出時至少保存其中一些值,以實現表單草稿預保存功能。 這樣,隨著用戶填寫表單,數據會逐漸保存,從而避免由于意外重新加載而丟失整個表單數據。

Why Higher-Order Observables?

為了實現表單草稿保存功能,我們需要獲取表單值,然后創建第二個執行后端保存的 HTTP observable,然后訂閱它。

我們可以嘗試手動完成所有這些,但是我們會陷入嵌套的訂閱反模式:

this.form.valueChanges.subscribe(formValue => {const httpPost$ = this.http.put(`/api/course/${courseId}`, formValue);httpPost$.subscribe(res => ... handle successful save ...err => ... handle save error ...);} );

正如我們所見,這會導致我們的代碼很快在多個級別嵌套,這是我們在使用 RxJs 時首先要避免的問題之一。

讓我們稱這個新的 httpPost$ Observable 為內部 Observable,因為它是在內部嵌套代碼塊中創建的。

Avoiding nested subscriptions

我們希望以更方便的方式完成所有這些過程:我們希望獲取表單值,并將其映射到保存 Observable 中。 這將有效地創建一個高階 Observable,其中每個值對應一個保存請求。

然后我們希望透明地訂閱這些網絡 Observable 中的每一個,并且一次性直接接收網絡響應,以避免任何嵌套。

如果我們有某種更高階的 RxJs 映射運算符,我們就可以做到這一切! 那為什么我們需要四個不同的操作符呢?

為了理解這一點,想象一下如果 valueChanges observable 快速連續發出多個表單值并且保存操作需要一些時間來完成,會發生什么情況:

  • 我們應該等待一個保存請求完成后再進行另一次保存嗎?
  • 我們應該并行進行多次保存嗎?
  • 我們應該取消正在進行的保存并開始新的保存嗎?
  • 當一個已經在進行中時,我們應該忽略新的保存嘗試嗎?

在探索這些用例中的每一個之前,讓我們回到上面的嵌套訂閱代碼。

在嵌套訂閱示例中,我們實際上是并行觸發保存操作,這不是我們想要的,因為沒有強有力的保證后端將按順序處理保存,并且最后一個有效的表單值確實是存儲在 后端。

讓我們看看如何確保僅在上一次保存完成后才完成保存請求。

Understanding Observable Concatenation

為了實現順序保存,我們將引入 Observable 連接的新概念。 在此代碼示例中,我們使用 concat() RxJs 函數連接兩個示例 observable:

const series1$ = of('a', 'b');const series2$ = of('x', 'y');const result$ = concat(series1$, series2$);result$.subscribe(console.log);

在使用 of 創建函數創建了兩個 Observables series1$ 和 series2$ 之后,我們創建了第三個 result$ Observable,它是串聯 series1$ 和 series2$ 的結果。

這是該程序的控制臺輸出,顯示了結果 Observable 發出的值:

a b x y

如我們所見,這些值是將 series1$ 的值與 series2$ 的值連接在一起的結果。 但這里有一個問題:這個例子能工作的原因是因為這些 Observable 正在完成!!

of() 函數將創建 Observables,它發出傳遞給 of() 的值,然后在發出所有值后完成 Observables。

Observable Concatenation Marble Diagram

你注意到第一個 Observable 的值 b 后面的豎線了嗎?這標志著第一個具有值 a 和 b (series1$) 的 Observable 完成的時間點。

讓我們按照時間表逐步分解這里發生的事情:

  • 兩個 Observables series1$ 和 series2$ 被傳遞給 concat() 函數
  • concat() 然后將訂閱第一個 Observable series1,但不會訂閱第二個Observableseries2,但不會訂閱第二個 Observable series2Observableseries2(這對于理解串聯至關重要)
  • source1$ 發出值 a,該值立即反映在輸出 result$ Observable 中
  • 注意 source2$ Observable 還沒有發出值,因為它還沒有被訂閱
  • 然后 source1$ 將發出 b 值,該值反映在輸出中
  • 然后 source1$ 將完成,只有在此之后 concat() 現在訂閱 source2$
  • 然后 source2$ 值將開始反映在輸出中,直到 source2$ 完成
  • 當 source2$ 完成時, result$ Observable 也將完成
  • 請注意,我們可以將任意數量的 Observable 傳遞給 concat(),而不僅僅是本示例中的兩個

The key point about Observable Concatenation

正如我們所看到的,Observable 連接就是關于 Observable 的完成! 我們取第一個 Observable 并使用它的值,等待它完成,然后我們使用下一個 Observable,依此類推,直到所有 Observable 完成。

回到我們的高階 Observable 映射示例,讓我們看看串聯的概念如何幫助我們。

Using Observable Concatenation to implement sequential saves

正如我們所見,為了確保我們的表單值按順序保存,我們需要獲取每個表單值并將其映射到 httpPost$ Observable。

然后我們需要訂閱它,但我們希望在訂閱下一個 httpPost$ Observable 之前完成保存。

In order to ensure sequentiality, we need to concatenate the multiple httpPost$ Observables together!

然后我們將訂閱每個 httpPost$ 并按順序處理每個請求的結果。 最后,我們需要的是一個混合了以下內容的運算符:

  • 一個高階映射操作(獲取表單值并將其轉換為 httpPost$ Observable)

  • 使用 concat() 操作,將多個 httpPost$ Observables 連接在一起以確保在前一個正在進行的保存首先完成之前不會進行下一個 HTTP 保存。

我們需要的是恰當命名的 RxJs concatMap Operator,它混合了高階映射和 Observable 連接。

The RxJs concatMap Operator

代碼如下:

this.form.valueChanges.pipe(concatMap(formValue => this.http.put(`/api/course/${courseId}`, formValue))).subscribe(saveResult => ... handle successful save ...,err => ... handle save error ... );

正如我們所見,使用像 concatMap 這樣的高階映射運算符的第一個好處是現在我們不再有嵌套訂閱。

通過使用 concatMap,現在所有表單值都將按順序發送到后端,如 Chrome DevTools Network 選項卡中所示:

Breaking down the concatMap network log diagram

正如我們所見,只有在上一次保存完成后才會啟動一個保存 HTTP 請求。 以下是 concatMap 運算符如何確保請求始終按順序發生:

  • concatMap 正在獲取每個表單值并將其轉換為保存的 HTTP Observable,稱為內部 Observable

  • concatMap 然后訂閱內部 Observable 并將其輸出發送到結果 Observable
    第二個表單值可能比在后端保存前一個表單值更快

  • 如果發生這種情況,新的表單值將不會立即映射到 HTTP 請求

  • 相反, concatMap 將等待先前的 HTTP Observable 完成,然后將新值映射到 HTTP Observable,訂閱它并因此觸發下一次保存

Observable Merging

將 Observable 串聯應用于一系列 HTTP 保存操作似乎是確保保存按預期順序發生的好方法。

但是在其他情況下,我們希望并行運行,而不需要等待前一個內部 Observable 完成。

為此,我們有合并 Observable 組合策略! 與 concat 不同,Merge 不會在訂閱下一個 Observable 之前等待 Observable 完成。

相反,merge 同時訂閱每個合并的 Observable,然后隨著多個值隨著時間的推移到達,它將每個源 Observable 的值輸出到組合結果 Observable。

Practical Merge Example

為了明確合并不依賴于完成,讓我們合并兩個從未完成的 Observables,因為它們是 interval Observables:

const series1$ = interval(1000).pipe(map(val => val*10));const series2$ = interval(1000).pipe(map(val => val*100));const result$ = merge(series1$, series2$);result$.subscribe(console.log);

使用 interval() 創建的 Observable 將每隔一秒發出值 0、1、2 等,并且永遠不會完成。

請注意,我們對這些區間 Observable 應用了幾個 map 運算符,只是為了更容易在控制臺輸出中區分它們。

以下是控制臺中可見的前幾個值:

0 0 10 100 20 200 30 300

Merging and Observable Completion

正如我們所見,合并的源 Observable 的值在發出時立即顯示在結果 Observable 中。 如果合并的 Observable 之一完成,merge 將繼續發出其他 Observable 隨著時間到達的值。

請注意,如果源 Observables 完成,合并仍會以相同的方式工作。

The Merge Marble Diagram

看另一個例子:

正如我們所見,合并的源 Observables 的值立即顯示在輸出中。 直到所有合并的 Observable 完成后,結果 Observable 才會完成。

現在我們了解了合并策略,讓我們看看它如何在高階 Observable 映射的上下文中使用。

回到我們之前的表單草稿保存示例,很明顯在這種情況下我們需要 concatMap 而不是 mergeMap,因為我們不希望保存并行發生。

讓我們看看如果我們不小心選擇了 mergeMap 會發生什么:

this.form.valueChanges.pipe(mergeMap(formValue => this.http.put(`/api/course/${courseId}`, formValue))).subscribe(saveResult => ... handle successful save ...,err => ... handle save error ... );

現在假設用戶與表單交互并開始相當快地輸入數據。 在這種情況下,我們現在會在網絡日志中看到多個并行運行的保存請求:

正如我們所看到的,請求是并行發生的,在這種情況下是一個錯誤! 在高負載下,這些請求可能會被亂序處理。

Observable Switching

現在我們來談談另一個 Observable 組合策略:切換。 切換的概念更接近于合并而不是串聯,因為我們不等待任何 Observable 終止。

但是在切換時,與合并不同,如果一個新的 Observable 開始發出值,我們將在訂閱新的 Observable 之前取消訂閱之前的 Observable。

Observable 切換就是為了確保未使用的 Observables 的取消訂閱邏輯被觸發,從而可以釋放資源!

Switch Marble Diagram

注意對角線,這些不是偶然的! 在切換策略的情況下,在圖中表示高階 Observable 很重要,它是圖像的頂行。

這個高階 Observable 發出的值本身就是 Observable。

對角線從高階 Observable 頂線分叉的那一刻,是 Observable 值被 switch 發出和訂閱的那一刻。

Breaking down the switch Marble Diagram

這是這張圖中發生的事情:

  • 高階 Observable 發出它的第一個內部 Observable (a-b-c-d),它被訂閱(通過 switch 策略實現)

  • 第一個內部 Observable (a-b-c-d) 發出值 a 和 b,它們立即反映在輸出中

  • 但隨后第二個內部 Observable (e-f-g) 被發射,這觸發了第一個內部 Observable (a-b-c-d) 的取消訂閱,這是切換的關鍵部分

  • 然后第二個內部 Observable (e-f-g) 開始發出新值,這些值反映在輸出中

  • 但請注意,第一個內部 Observable (a-b-c-d) 同時仍在發出新值 c 和 d

  • 然而,這些后來的值沒有反映在輸出中,那是因為我們同時取消了第一個內部 Observable (a-b-c-d) 的訂閱

我們現在可以理解為什么必須以這種不尋常的方式繪制圖表,用對角線:這是因為我們需要在每個內部 Observable 被訂閱(或取消訂閱)時直觀地表示,這發生在對角線從源高階 Observable。

The RxJs switchMap Operator

然后讓我們采用切換策略并將其應用于高階映射。 假設我們有一個普通的輸入流,它發出值 1、3 和 5。

然后我們將每個值映射到一個 Observable,就像我們在 concatMap 和 mergeMap 的情況下所做的那樣,并獲得一個更高階的 Observable。

如果我們現在在發出的內部 Observable 之間切換,而不是連接或合并它們,我們最終會得到 switchMap 運算符:

Breaking down the switchMap Marble Diagram

這是該運算符的工作原理:

  • 源 observable 發出值 1、3 和 5
  • 然后通過應用映射函數將這些值轉換為 Observable
  • 映射的內部 Observable 被 switchMap 訂閱
  • 當內部 Observables 發出一個值時,該值會立即反映在輸出中
  • 但是如果在前一個 Observable 有機會完成之前發出了像 5 這樣的新值,則前一個內部 Observable (30-30-30) 將被取消訂閱,并且它的值將不再反映在輸出中
  • 注意上圖中紅色的 30-30-30 內部 Observable:最后 30 個值沒有發出,因為 30-30-30 內部 Observable 被取消訂閱

如我們所見,Observable 切換就是確保我們從未使用的 Observable 觸發取消訂閱邏輯。 現在讓我們看看 switchMap 的運行情況!

Search TypeAhead - switchMap Operator Example

switchMap 的一個非常常見的用例是搜索 Typeahead。 首先讓我們定義源 Observable,其值本身將觸發搜索請求。

這個源 Observable 將發出值,這些值是用戶在輸入中鍵入的搜索文本:

const searchText$: Observable<string> = fromEvent<any>(this.input.nativeElement, 'keyup').pipe(map(event => event.target.value),startWith('')).subscribe(console.log);

此源 Observable 鏈接到用戶鍵入其搜索的輸入文本字段。 當用戶輸入單詞“Hello World”作為搜索時,這些是 searchText$ 發出的值:

Debouncing and removing duplicates from a Typeahead

請注意重復值,要么是由于使用兩個單詞之間的空格,要么是使用 Shift 鍵將字母 H 和 W 大寫。

為了避免將所有這些值作為單獨的搜索請求發送到后端,讓我們使用 debounceTime 運算符等待用戶輸入穩定:

const searchText$: Observable<string> = fromEvent<any>(this.input.nativeElement, 'keyup').pipe(map(event => event.target.value),startWith(''),debounceTime(400)).subscribe(console.log);

使用此運算符,如果用戶以正常速度鍵入,則 searchText$ 的輸出中現在只有一個值:Hello World

這已經比我們之前的要好得多,現在只有在穩定至少 400 毫秒時才會發出值!

但是如果用戶在考慮搜索時輸入緩慢,以至于兩個值之間需要超過 400 毫秒,那么搜索流可能如下所示:

此外,用戶可以鍵入一個值,按退格鍵并再次鍵入,這可能會導致重復的搜索值。 我們可以通過添加 distinctUntilChanged 操作符來防止重復搜索的發生。

Cancelling obsolete searches in a Typeahead

但更重要的是,我們需要一種方法來取消以前的搜索,因為新的搜索開始了。

我們在這里要做的是將每個搜索字符串轉換為后端搜索請求并訂閱它,并在兩個連續的搜索請求之間應用切換策略,如果觸發新的搜索,則取消之前的搜索。

這正是 switchMap 運算符將要做的! 這是使用它的 Typeahead 邏輯的最終實現:

const searchText$: Observable<string> = fromEvent<any>(this.input.nativeElement, 'keyup').pipe(map(event => event.target.value),startWith(''),debounceTime(400),distinctUntilChanged()); const lessons$: Observable<Lesson[]> = searchText$.pipe(switchMap(search => this.loadLessons(search)) ).subscribe();function loadLessons(search:string): Observable<Lesson[]> {const params = new HttpParams().set('search', search);return this.http.get(`/api/lessons/${coursesId}`, {params}); }

switchMap Demo with a Typeahead

現在讓我們看看 switchMap 操作符的作用! 如果用戶在搜索欄上輸入,然后猶豫并輸入其他內容,我們通常會在網絡日志中看到以下內容:

正如我們所看到的,之前的一些搜索在進行時已被取消,這很棒,因為這將釋放可用于其他事情的服務器資源。

The Exhaust Strategy

switchMap 操作符是預輸入場景的理想選擇,但在其他情況下,我們想要做的是忽略源 Observable 中的新值,直到前一個值被完全處理。

例如,假設我們正在觸發后端保存請求以響應單擊保存按鈕。 我們可能首先嘗試使用 concatMap 運算符來實現這一點,以確保保存操作按順序發生:

fromEvent(this.saveButton.nativeElement, 'click').pipe(concatMap(() => this.saveCourse(this.form.value))).subscribe();

這確保保存按順序完成,但是如果用戶多次單擊保存按鈕會發生什么? 以下是我們將在網絡日志中看到的內容:

正如我們所見,每次點擊都會觸發自己的保存:如果我們點擊 20 次,我們會得到 20 次保存! 在這種情況下,我們想要的不僅僅是確保按順序進行保存。

我們還希望能夠忽略點擊,但前提是保存已經在進行中。 排氣 Observable 組合策略將允許我們做到這一點。

Exhaust Marble Diagram

就像以前一樣,我們在第一行有一個更高階的 Observable,它的值本身就是 Observable,從第一行分叉出來。這是這張圖中發生的事情:

  • 就像 switch 的情況一樣,exhaust 訂閱第一個內部 Observable (a-b-c)
    像往常一樣,值 a、b 和 c 會立即反映在輸出中
  • 然后發出第二個內部 Observable (d-e-f),而第一個 Observable (a-b-c) 仍在進行中
  • 第二個 Observable 被排放策略丟棄,并且不會被訂閱(這是排放的關鍵部分)
    只有在第一個 Observable (a-b-c) 完成后,排氣策略才會訂閱新的 Observable
  • 當第三個 Observable (g-h-i) 發出時,第一個 Observable (a-b-c) 已經完成,所以第三個 Observable 不會被丟棄,會被訂閱
  • 然后,第三個 Observable 的值 g-h-i 將顯示在結果 Observable 的輸出中,與輸出中不存在的值 d-e-f 不同

就像 concat、merge 和 switch 的情況一樣,我們現在可以在高階映射的上下文中應用 exhaust 策略。

The RxJs exhaustMap Operator

現在讓我們看看exhaustMap 操作符的彈珠圖。 讓我們記住,與上圖的第一行不同,源 Observable 1-3-5 發出的值不是 Observable。

相反,這些值可以是例如鼠標點擊:

所以這是在排放地圖圖的情況下發生的事情:

  • 發出值 1,并創建內部 Observable 10-10-10
  • Observable 10-10-10 發出所有值并在源 Observable 中發出值 3 之前完成,因此所有 10-10-10 值在輸出中發出
  • 在輸入中發出一個新值 3,觸發一個新的 30-30-30 內部 Observable
  • 但是現在,雖然 30-30-30 仍在運行,但我們在源 Observable 中得到了一個新值 5
  • 這個值 5 被排氣策略丟棄,這意味著從未創建 50-50-50 Observable,因此 50-50-50 值從未出現在輸出中

A Practical Example for exhaustMap

現在讓我們將這個新的exhaustMap Operator 應用到我們的保存按鈕場景中:

fromEvent(this.saveButton.nativeElement, 'click').pipe(exhaustMap(() => this.saveCourse(this.form.value))).subscribe();

如果我們現在點擊保存,假設連續 5 次,我們將獲得以下網絡日志:

正如我們所看到的,我們在保存請求仍在進行時所做的點擊被忽略了,正如預期的那樣!

請注意,如果我們連續點擊例如 20 次,最終正在進行的保存請求將完成,然后第二個保存請求將開始。

How to choose the right mapping Operator?

concatMap、mergeMap、switchMap 和exhaustMap 的行為相似,因為它們都是高階映射運算符。

但它在許多微妙的方面也如此不同,以至于實際上沒有一個運算符可以安全地指向默認值。

相反,我們可以簡單地根據用例選擇合適的運算符:

  • 如果我們需要在等待完成的同時按順序做事情,那么 concatMap 是正確的選擇

  • 對于并行處理,mergeMap 是最好的選擇

  • 如果我們需要取消邏輯,switchMap 是要走的路

  • 為了在當前的 Observables 仍在進行時忽略新的 Observables,exhaustMap 就是這樣做的

總結

正如我們所見,RxJ 的高階映射運算符對于在響應式編程中執行一些非常常見的操作(例如網絡調用)至關重要。

為了真正理解這些映射操作符及其名稱,我們首先需要重點了解底層的Observable組合策略concat、merge、switch和exhaust。

我們還需要意識到有一個更高階的映射操作正在發生,其中值被轉換成分離的 Observables,并且這些 Observables 被映射運算符本身以隱藏的方式訂閱。

選擇正確的算子就是選擇正確的內部 Observable 組合策略。 選擇錯誤的運算符通常不會導致程序立即損壞,但隨著時間的推移可能會導致一些難以解決的問題。

更多Jerry的原創文章,盡在:“汪子熙”:

總結

以上是生活随笔為你收集整理的RxJS switchMap, mergeMap, concatMap,exhaustMap 的比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

九色在线 | 亚洲国产日韩一区 | 国产91精品一区二区麻豆网站 | 色播五月激情综合网 | a视频在线观看免费 | 欧美一区二区三区免费观看 | 日韩一区二区免费在线观看 | 国产精品麻豆免费版 | 久久三级视频 | 亚洲一区日韩精品 | 国产精品入口麻豆www | 91精选在线观看 | 五月婷婷深开心 | www.狠狠插.com| 中文字幕资源网在线观看 | 免费a现在观看 | 一级片免费观看视频 | 国产涩涩在线观看 | 午夜久久福利视频 | 欧美精品黑人性xxxx | 日韩xxxxxxxxx | 国产日韩欧美在线播放 | 久久人人爽人人爽人人片av免费 | 狠狠色狠狠色综合系列 | 亚洲黄色片在线 | 最近中文字幕完整视频高清1 | 欧美性久久久久久 | 99久久日韩精品视频免费在线观看 | 免费成人在线视频网站 | 免费日韩一区二区 | 久久精品视频99 | 久久国产影视 | 久久99热这里只有精品国产 | 综合网五月天 | 激情综合啪啪 | 久草久草在线 | 日日夜夜中文字幕 | 国产老太婆免费交性大片 | 国产一区二区三区四区大秀 | 黄在线免费观看 | 久久国产精品99久久久久 | 97高清视频 | 国产成人三级在线播放 | 亚洲小视频在线观看 | 国产精品免费久久久久 | 麻豆视频免费入口 | 日韩成人免费在线电影 | 特级毛片爽www免费版 | 五月婷婷精品 | 日韩精品视频在线观看网址 | 欧美日韩在线视频观看 | 日韩高清激情 | 8090yy亚洲精品久久 | 午夜手机电影 | 国内丰满少妇猛烈精品播放 | 久久精品波多野结衣 | 97天天综合网 | 99久久毛片 | 麻豆视频在线 | 久久激情影院 | 久久久国产精品免费 | 国产亚洲精品久久久久久无几年桃 | www.激情五月.com| 国产精品色婷婷视频 | 国产裸体bbb视频 | 久久一区国产 | 美女福利视频一区二区 | 91精品视频在线观看免费 | 久久av一区二区三区亚洲 | 日韩精品亚洲专区在线观看 | 在线午夜| 毛片3| 在线免费性生活片 | 亚洲精品字幕在线 | 五月综合婷 | 韩国av电影在线观看 | 91视频三区| 丁香一区二区 | 日韩欧美国产激情在线播放 | 91免费在线看片 | 欧美色图30p | 亚洲天堂网视频 | 欧美日韩国产在线精品 | 日精品 | 国产一级a毛片视频爆浆 | 久久99国产精品久久99 | 一区二区三高清 | 色片网站在线观看 | 色妞色视频一区二区三区四区 | 伊人夜夜 | 久草视频首页 | 一级黄色片网站 | 99久免费精品视频在线观看 | 在线观看中文字幕一区二区 | 最近高清中文字幕在线国语5 | av福利在线看 | 中文字幕 二区 | 国产网站色| 97香蕉超级碰碰久久免费软件 | 成年免费在线视频 | 蜜臀av.com | 精品久久久一区二区 | 麻豆免费视频网站 | 亚洲精品乱码久久久久 | 国产人免费人成免费视频 | 免费日韩一区二区三区 | 一区 二区 精品 | 欧美极度另类 | 亚洲精品久久久久中文字幕m男 | 在线观看免费成人 | 久久国产精品久久精品 | 日韩免费三级 | 久久夜色精品国产欧美乱 | 亚洲成人精品国产 | 亚洲一区二区高潮无套美女 | 亚洲国产wwwccc36天堂 | 在线免费黄色 | 亚洲精品久久激情国产片 | 波多野结衣久久资源 | 国产亚洲午夜高清国产拍精品 | 国产精品系列在线观看 | 黄色一区二区在线观看 | 99国产精品一区二区 | 不卡的av片 | 久久久三级视频 | 久久国产一二区 | 国产亚洲精品综合一区91 | 国产日韩欧美中文 | 欧美一级久久久 | 中文字幕 第二区 | 国产日本亚洲高清 | 亚洲人久久久 | 99热这里| 欧美爽爽爽 | 精品自拍sae8—视频 | 伊人网综合在线观看 | 密桃av在线 | 91视频久久久久久 | 免费av成人在线 | 国产视频一区在线免费观看 | 国产成人精品一区二区三区福利 | 91爱爱视频| 五月香视频在线观看 | 国产中文字幕在线视频 | 国产亚洲情侣一区二区无 | 精品一区二区在线免费观看 | 久久久国产一区 | 成人av中文字幕在线观看 | 91久久国产自产拍夜夜嗨 | 玖玖视频免费在线 | 亚洲欧美成人网 | 在线观看va | 人人干人人超 | 亚洲精品www. | 精品一区二区电影 | 亚洲国产中文字幕 | 一区二区三区在线免费观看视频 | 亚洲一区尤物 | 99riav1国产精品视频 | av国产在线观看 | 久久精品视 | 日本精品午夜 | 久久国产剧场电影 | 欧美日韩a视频 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 亚洲h色精品 | 最近高清中文字幕 | 欧美91精品国产自产 | 日韩1页| 久久爽久久爽久久av东京爽 | 激情中文在线 | 最新高清无码专区 | 精品在线观 | 国产麻豆视频 | 久久综合久久久 | 一区二区三区四区五区在线 | 欧美激情视频在线观看免费 | 中文字幕美女免费在线 | 日韩av影视在线 | 国产 日韩 欧美 在线 | 色噜噜色噜噜 | 国产亚洲精品久久19p | 色天天综合网 | 成人h视频在线播放 | 日本中文字幕电影在线免费观看 | 久久精品中文字幕 | 亚洲dvd| 久久99久久99精品 | 一区二区三区四区久久 | 成人av在线影视 | 成人av免费在线看 | 国产精品高清免费在线观看 | 国产护士在线 | 亚洲精品大片www | 在线观看日韩免费视频 | 久久99在线| av电影免费 | 日韩中文字幕第一页 | 亚洲免费av在线 | 热久久精品在线 | 成人久久18免费网站图片 | 色在线观看网站 | 亚洲精品在线网站 | av免费看av| 久久看视频 | 亚洲高清av在线 | 最近中文字幕大全中文字幕免费 | 久久精品视频在线播放 | 亚洲精品乱码久久 | 波多野结衣最新 | 国产中文字幕一区 | 蜜臀av麻豆| 高清一区二区三区 | 婷婷婷国产在线视频 | 97精品国自产拍在线观看 | 在线观看视频色 | 日本公妇在线观看高清 | 亚洲毛片一区二区三区 | 色国产在线 | 在线观看亚洲视频 | 91精品视频在线观看免费 | av在线免费播放网站 | 国产大片黄色 | 91精品国产91热久久久做人人 | av中文字幕第一页 | 国产99视频在线观看 | 日韩视频在线一区 | .国产精品成人自产拍在线观看6 | 国产小视频福利在线 | 亚洲精品视频在线播放 | 一本—道久久a久久精品蜜桃 | 精品视频久久久 | 成人久久久久久久久久 | 国产 日韩 在线 亚洲 字幕 中文 | 91福利在线导航 | 超碰在线中文字幕 | 黄色大片日本 | 欧美日韩高清一区二区三区 | av片免费播放 | 欧美日韩国产精品一区二区亚洲 | 久久久91精品国产一区二区三区 | 精品国产一区二区三区在线观看 | 日韩精品一区二区三区免费视频观看 | 国产一级在线播放 | 日日噜噜噜噜夜夜爽亚洲精品 | 天天操夜夜叫 | 欧美日韩午夜爽爽 | 日韩免费在线看 | 狠狠色网 | 日韩高清国产精品 | 成年人视频免费在线播放 | 成人a免费 | 国产精品久久久久久久久久久久久久 | 91av观看 | 国产乱码精品一区二区蜜臀 | 91成人网在线观看 | 亚洲欧洲av在线 | 国产视频久久久久 | 亚洲一区动漫 | 国产1区在线观看 | 欧美日产在线观看 | 在线看一区二区 | 麻豆果冻剧传媒在线播放 | 中文字幕.av.在线 | 国产一区二区精 | 亚洲mv大片欧洲mv大片免费 | 午夜视频在线观看欧美 | 国产拍揄自揄精品视频麻豆 | 91亚洲成人 | 综合网天天色 | 亚洲一级二级 | 精品久久电影 | 深爱激情站 | 精品国产亚洲一区二区麻豆 | 天天操天天草 | 亚洲国产精品女人久久久 | 夜夜操狠狠操 | 91人人揉日日捏人人看 | 伊人久久在线观看 | 99热这里只有精品1 av中文字幕日韩 | 免费碰碰 | 天天玩天天干天天操 | 免费一级特黄毛大片 | 国产999精品久久久久久绿帽 | www免费看片com| 亚洲国产精品一区二区久久hs | 手机在线永久免费观看av片 | 99久久精品午夜一区二区小说 | 久久精品三级 | 麻豆91精品视频 | 99精品一级欧美片免费播放 | www色片| 久久成人精品电影 | 免费在线观看视频一区 | 亚洲精品福利在线 | 日韩最新av在线 | 成人小视频免费在线观看 | 成年人视频在线观看免费 | 亚洲男男gaygay无套同网址 | 天天综合天天做天天综合 | 婷婷社区五月天 | aaa免费毛片 | 爱干视频| 成人免费观看电影 | 国产操在线 | 日本黄色免费在线 | 国产精品久久久久永久免费看 | 在线视频 一区二区 | 伊人电影天堂 | 亚洲 在线 | 国产一区二区在线精品 | 国产九九九九九 | 久操视频在线观看 | 片网站| a级国产乱理论片在线观看 伊人宗合网 | 豆豆色资源网xfplay | 一级淫片在线观看 | 91高清视频在线 | 亚洲最新毛片 | 特级西西444www大精品视频免费看 | 天天se天天cao天天干 | 久久免费国产精品 | 久久精品99国产 | 亚洲资源| 日韩电影一区二区在线观看 | 亚洲mv大片欧洲mv大片免费 | 国产美女网 | 久久国产精品一二三区 | 久久撸在线视频 | 天天玩天天操天天射 | 超碰免费在线公开 | 国产在线观看你懂得 | 在线观看91精品国产网站 | 日本三级人妇 | 欧美大香线蕉线伊人久久 | 日韩高清国产精品 | 91视频在线免费观看 | 九九九在线 | 国产美女视频免费观看的网站 | 婷婷在线综合 | 婷婷国产一区二区三区 | 不卡的av在线| 久久久久久国产一区二区三区 | 免费91麻豆精品国产自产在线观看 | 不卡精品视频 | 青青草国产免费 | 91在线最新 | 99这里只有| av福利在线看 | 91网在线 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 免费网站看v片在线a | 久久综合九色综合欧美就去吻 | 最近中文字幕大全 | 丁香激情五月 | 天天摸天天操天天爽 | 91精品啪啪 | 91豆麻精品91久久久久久 | 综合久久久久 | 在线观看国产区 | 久久人人爽人人 | 久久99国产精品免费 | 深爱五月激情五月 | 丁香电影小说免费视频观看 | av高清免费在线 | 国产精品成人在线观看 | 亚洲一区欧美精品 | 91av99| 国产一区观看 | 黄色app网站在线观看 | 日韩黄色在线电影 | 天天碰天天操 | 啪啪免费视频网站 | 国产精品久久久久久久久久东京 | 超碰人人舔 | 香蕉久久国产 | 91亚洲在线| 99婷婷| 婷婷久久综合网 | 99人成在线观看视频 | 夜夜视频| 97精品国产97久久久久久久久久久久 | 66av99精品福利视频在线 | 91黄色免费网站 | 超碰国产在线播放 | 爱爱av网站 | 又色又爽又激情的59视频 | 久久久毛片 | 一区二精品 | 久久精品视频免费观看 | 久久撸在线视频 | 久草久草在线观看 | 日本高清xxxx | 天天操天天操天天操天天操 | 久久伊人综合 | 日韩黄色免费电影 | 高清一区二区三区av | 亚洲精品乱码久久久久久久久久 | 五月婷婷色综合 | 亚洲精品国产精品99久久 | 日韩网站在线观看 | 在线免费视 | 综合久久久久久 | 免费在线国产精品 | 亚洲精品字幕在线 | 丁香婷婷色 | 五月天丁香 | 国产黄色片免费看 | 亚洲午夜久久久综合37日本 | 国产在线一线 | 色噜噜噜 | www日韩精品| 国产精品99久久久久的智能播放 | 日韩手机视频 | 日韩动漫免费观看高清完整版在线观看 | 国产亚洲成av人片在线观看桃 | 午夜精品福利在线 | 免费观看一区二区 | 久久99久久久久久 | 毛片网免费| 色婷婷久久一区二区 | 激情网第四色 | 黄色av一级片| 成人免费电影 | 中文字幕av在线电影 | 色婷婷激情电影 | 国产亚洲永久域名 | 免费在线观看视频一区 | 久久久久免费精品国产小说色大师 | 麻豆 91 在线 | 久久国产99 | 九九视频在线播放 | 97碰碰精品嫩模在线播放 | 玖玖爱在线观看 | 岛国av在线免费 | 精品一二三四视频 | 一区二区三区久久精品 | 中国成人一区 | 四月婷婷在线观看 | 一级黄色电影网站 | 亚洲国产资源 | 久久av免费观看 | 999超碰| 日韩激情片在线观看 | 欧美精品国产综合久久 | 国产又粗又猛又黄又爽 | 久久超碰免费 | 中文字幕第一页在线 | 99精品国产99久久久久久97 | 一区二区三区四区在线 | www.69xx| 国产99久久久久 | 色综合久久久久综合99 | 九九热只有这里有精品 | 在线一区观看 | 亚洲国产精彩中文乱码av | av大全在线免费观看 | 国产精品99在线观看 | 黄av资源 | 在线免费观看视频一区二区三区 | 性色av香蕉一区二区 | 成 人 黄 色 视频 免费观看 | 国产成人一区二区精品非洲 | 三级黄色大片在线观看 | 夜色成人av | 在线国产高清 | 亚洲黄色片 | 中文字幕在线播放视频 | 96亚洲精品久久久蜜桃 | 五月婷婷综合久久 | 日韩欧美精品在线观看 | 一区二区三区在线看 | 有没有在线观看av | 亚洲人人网 | 国产精品中文字幕av | 在线观看免费黄色 | 黄色片网站av | 色悠悠久久综合 | 成人一区电影 | 日韩精品久久久 | 成人资源网| 黄色午夜| 97理论片 | 黄色福利网 | 天天摸日日操 | 国产精品久久久 | 人人超碰人人 | 最新日韩在线 | 免费观看久久 | 中文字幕在线观看第一页 | 福利视频导航网址 | 日韩电影在线视频 | 91麻豆高清视频 | www.91av在线| 久久久国产精品免费 | 在线日韩精品视频 | 亚洲精选99 | 欧美巨乳波霸 | 国际精品久久久久 | 24小时日本在线www免费的 | 欧美资源 | 97狠狠干| 中文字幕国产视频 | 精品一区二区三区电影 | 国产精品 日韩 欧美 | 在线观看国产日韩欧美 | 久久99精品一区二区三区三区 | 日韩欧美在线视频一区二区三区 | 欧美色综合天天久久综合精品 | 黄色国产成人 | 久久精品国产美女 | 久久成人在线视频 | 黄色av电影| 免费看在线看www777 | 国产在线毛片 | 免费韩国av | 久久精品亚洲一区二区三区观看模式 | 欧美一级片在线播放 | 亚洲一级电影 | 好看的国产精品视频 | 欧美91视频 | 中文字幕资源网 | 中国一级片视频 | 久久久久久久久久久高潮一区二区 | 国产福利a | 一区 二区电影免费在线观看 | 午夜精品视频福利 | 99久久精品免费看国产一区二区三区 | 亚洲精品国产精品国自产在线 | 国产一级大片在线观看 | 97免费视频在线播放 | 黄av免费 | 久久看毛片 | 日韩av看片 | 一区二区三区在线观看免费视频 | 欧美精品久久人人躁人人爽 | 久久久久久久久毛片 | 亚洲一区二区视频在线 | 久久国色夜色精品国产 | 国产亚洲精品美女久久 | 国产在线不卡一区 | 成年人视频在线免费 | 中文字幕婷婷 | 国产一级免费在线 | 国产亚洲精品久久久久久 | 国产系列 在线观看 | av中文字幕网站 | 99久久夜色精品国产亚洲96 | 久久免费黄色网址 | 欧美久久久一区二区三区 | 国产精品成人久久 | 4438全国亚洲精品观看视频 | 国产一级电影在线 | 麻豆国产精品va在线观看不卡 | 五月天激情开心 | 久久影视一区二区 | 日本不卡123 | 在线观看国产日韩欧美 | 天天干,夜夜爽 | 亚洲丝袜中文 | 亚洲精品人人 | 色无五月 | 免费无遮挡动漫网站 | 国产精品综合在线 | 不卡的av在线播放 | 国产 日韩 欧美 自拍 | 日本精品视频网站 | 久久久久免费精品 | 亚洲午夜精品久久久久久久久久久久 | 日本韩国精品一区二区在线观看 | 日韩一区正在播放 | 99爱这里只有精品 | 色综合亚洲精品激情狠狠 | 国产黄色一级片在线 | 日日摸日日添日日躁av | 日韩在线免费观看视频 | 欧美日韩成人一区 | 免费精品在线 | 国产精品四虎 | 免费在线观看日韩视频 | 99亚洲天堂 | www.夜夜爱 | 亚洲国产精品传媒在线观看 | 亚洲日韩欧美视频 | 成人一区在线观看 | 在线观看色网 | 91成人精品在线 | 亚洲一区二区精品在线 | 美女视频黄是免费的 | 久久久黄视频 | 黄色的网站在线 | 精品国产乱码久久久久久三级人 | 国产精品www| 开心丁香婷婷深爱五月 | 国产手机视频精品 | 久久国产午夜精品理论片最新版本 | 精品日韩av | 亚洲精品在线视频网站 | 欧美久久久| av在线亚洲天堂 | 国产精品手机播放 | 一区二区精品在线 | 日韩高清av | 久久精品中文视频 | 免费看一级黄色大全 | 黄色毛片在线看 | 亚洲成人免费在线观看 | 热久久免费视频 | 亚洲人毛片 | 伊人婷婷 | 日韩欧美精品在线视频 | www.com黄 | 国产精品一区二区免费视频 | 人人澡视频 | 99超碰在线观看 | 国产三级在线播放 | 91资源在线免费观看 | 三级av网站| 欧美a级免费视频 | 国产精品国产三级国产不产一地 | 国产麻豆视频在线观看 | 日韩中文字幕视频在线 | 欧美精品久久久久久久久久丰满 | 国产自产高清不卡 | 日韩视频一区二区三区在线播放免费观看 | 国产成人精品一区二区在线观看 | 国产不卡免费 | 国产999在线观看 | 黄色网址在线播放 | 日韩二区三区 | 九九热在线免费观看 | 中文区中文字幕免费看 | 日本女人的性生活视频 | 一区二区 精品 | 日韩精品久久中文字幕 | 91免费网站在线观看 | 91天堂影院 | 91精品国产三级a在线观看 | 热久久影视 | 日韩一级理论片 | 国产亚洲综合在线 | 色婷婷成人网 | 九九99视频 | 五月婷婷六月丁香 | 免费看黄色大全 | 日韩精品免费在线观看视频 | 国产成人av福利 | 久久久亚洲网站 | 狠狠色丁香久久婷婷综合丁香 | 探花国产在线 | 国产大片黄色 | 美女视频免费精品 | 精品国产91亚洲一区二区三区www | 麻豆一精品传二传媒短视频 | 中文亚洲欧美日韩 | 中文字幕一区在线观看视频 | 永久免费av在线播放 | 久久久在线免费观看 | 88av色| 免费日韩高清 | 亚洲综合色丁香婷婷六月图片 | 久草免费在线 | 九九热免费观看 | 国产精品久久伊人 | 精品国产乱子伦一区二区 | 欧美小视频在线观看 | 手机在线免费av | 国产午夜精品一区二区三区在线观看 | 国产在线一卡 | 97在线精品 | 黄色影院在线观看 | 天天色综合天天 | 久久免费公开视频 | www.天天干 | 久久在线免费观看 | 999在线观看视频 | 久久免费一级片 | 国产午夜精品一区二区三区在线观看 | 亚洲夜夜综合 | 天天色天天搞 | 久久综合九色综合欧美狠狠 | 亚洲激情在线 | 91伊人影院 | 久久久视屏| 91精彩在线视频 | 九九在线播放 | 亚州精品国产 | 天天综合网久久 | 在线观看视频黄色 | 在线中文字幕网站 | 久久久久久久久久亚洲精品 | 91久久奴性调教 | 国产精品久久久久久久久久久久久久 | 免费视频黄 | 在线观看国产麻豆 | 国产色视频123区 | 中文字幕免费高清 | 欧美成年人在线视频 | www.97视频| 制服丝袜欧美 | 国产精品一区二区在线观看 | 中文字幕中文字幕 | 欧美十八 | 九九亚洲视频 | 国产一区二区高清 | 午夜视频欧美 | 国产精品久久久久国产精品日日 | www.国产在线视频 | 精品在线不卡 | 91综合色 | av电影免费看 | 国产在线精品播放 | 五月婷婷毛片 | 一区二区视频在线播放 | 亚洲精品在线观看视频 | 天天操网站 | 亚洲国产一二三 | 成人av手机在线 | 色综合久久久久综合 | 国产高清精品在线 | 国产精品欧美久久久久无广告 | 精品久久一级片 | 欧产日产国产69 | 精品麻豆入口免费 | 国产丝袜 | 中文字幕在线观看三区 | 91精品夜夜 | 午夜成人影视 | 免费日韩 精品中文字幕视频在线 | 九色精品在线 | 久草视频在线资源站 | 91精品国产福利在线观看 | 国产精品免费久久久 | 日韩区在线观看 | a'aaa级片在线观看 | 色五婷婷| 国产91在线观 | 亚洲精品在线播放视频 | 在线 国产 日韩 | 91在线视频免费观看 | 中文av日韩| 日韩久久视频 | 天天综合网天天综合色 | 91久久一区二区 | www.神马久久 | 蜜桃视频日韩 | 高清有码中文字幕 | 欧美 激情 国产 91 在线 | 国产一区二区免费在线观看 | 精品一区二区6 | 美女一区网站 | 国产高清在线视频 | 亚洲精区二区三区四区麻豆 | 国产电影一区二区三区四区 | 91中文字幕在线播放 | 免费在线观看成年人视频 | 丁香五月亚洲综合在线 | 国产精彩视频一区二区 | 婷婷中文字幕综合 | 国产精品免费久久久 | 精品国产乱码久久久久 | 免费在线观看a v | 欧美天天综合网 | 免费视频91蜜桃 | 精品免费一区二区三区 | 中文字幕在线观看91 | 免费福利视频网站 | 91九色综合 | 日韩午夜视频在线观看 | 在线影院av | 五月天婷婷在线播放 | 蜜臀av一区| 中文字幕在线视频免费播放 | 中文字幕日韩电影 | 国产精品在线看 | 日本中文字幕免费观看 | 成人国产精品久久久春色 | 免费看的毛片 | 国产精品久久久久aaaa | 91亚洲精品久久久 | 日韩激情一二三区 | 激情婷婷在线观看 | 日韩欧美在线中文字幕 | 日韩av一区二区在线 | 久久久久久久99精品免费观看 | 久久人人爽人人人人片 | 久久影院午夜论 | 久久免费视频网 | 97超碰免费在线观看 | 91av视屏| 亚洲色图 校园春色 | 在线免费观看国产视频 | 免费日韩视频 | 国产免费av一区二区三区 | sm免费xx网站| www.夜夜干.com | 色中文字幕在线观看 | 国产精品人人做人人爽人人添 | 精品成人国产 | 国产精品网红直播 | 国产精品videossex国产高清 | 久久国产精品二国产精品中国洋人 | 欧美一区二区三区在线 | 日韩在线短视频 | 国产人成看黄久久久久久久久 | 美女一区网站 | 天天色天天操天天爽 | 91精品1区2区 | av网站有哪些| 日韩免费看片 | 激情五月网站 | 久久久国产精品亚洲一区 | 国产精品久久久久三级 | 91视频啪 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 久久国产露脸精品国产 | 欧美性生爱| 国产不卡一区二区视频 | 久久综合成人 | 国产麻豆精品在线观看 | 高清不卡一区二区三区 | 国产a级免费 | 六月久久婷婷 | 中文字幕日韩在线播放 | 99久久婷婷国产综合亚洲 | 久久激情片 | 果冻av在线 | 天天干,天天射,天天操,天天摸 | 久久成人资源 | 久久精品一二三区 | 成年人电影免费看 | 成人精品亚洲 | 韩国一区在线 | 夜又临在线观看 | 99精品免费在线 | 在线视频国产区 | 国产一区福利 | 免费av小说| 综合在线亚洲 | 亚洲婷婷综合色高清在线 | 日韩av手机在线观看 | 97在线影视 | 伊人影院av | 亚洲国产影院 | 99热在线免费观看 | 亚洲激情校园春色 | 亚洲精品福利在线 | 天天干天天射天天插 | 国产精品久久久久婷婷二区次 | 国产午夜三级一区二区三桃花影视 | 免费看片黄色 | 麻豆国产在线视频 | 婷婷99| 天天艹天天 | 欧美 高跟鞋交 xxxxhd | 丰满少妇高潮在线观看 | 九九热只有这里有精品 | 成年人电影毛片 | 国产成人精品电影久久久 | 亚洲天堂自拍视频 | 中文在线亚洲 | av色综合网 | 日韩精品一区二区三区免费观看视频 | 久久8精品| 99久久这里只有精品 | 夜夜躁日日躁 | 探花视频免费观看高清视频 | 亚洲精品视频在线观看网站 | 日韩av在线免费看 | 国产一卡二卡在线 | 精品视频免费在线 | 国产精品精品国产婷婷这里av | 欧美极度另类 | 成人欧美亚洲 | 国内亚洲精品 | 欧美日韩有码 | 亚洲乱码精品久久久久 | 国产+日韩欧美 | 国产日本三级 | 国产精品久久久久久久免费大片 | 免费观看www视频 | 夜色资源站wwwcom | 韩国一区二区三区视频 | 国产资源在线观看 | 日韩视频一区二区三区在线播放免费观看 | 久久精品精品电影网 | 最新国产精品拍自在线播放 | www.黄色小说.com | 欧美一级在线看 | 亚洲第一成网站 | 国产999精品久久久久久绿帽 | av电影不卡在线 | 亚洲午夜精品久久久 | 亚洲天天 | 在线综合 亚洲 欧美在线视频 | 欧美激情综合色 | 亚州国产视频 | 视频一区二区视频 | 在线播放国产一区二区三区 | 高清av免费看 | 亚洲女在线 | 日日爽视频 | 成年人网站免费观看 | 狠狠色丁香久久婷婷综 | 日本一区二区三区免费看 | 免费看黄在线网站 | 日韩.com| 亚洲第二色| 色99导航 | 天天精品视频 | 亚洲国产精品激情在线观看 | 日韩精品无码一区二区三区 | 日韩网站视频 | 久久久夜色| 亚洲精品一区二区三区四区高清 | 欧美国产精品一区二区 | 一区二区三区视频网站 | 国产精品99久久久精品免费观看 | 狠狠干天天射 | 亚洲色图美腿丝袜 | 美女福利视频一区二区 | 日韩一级片网址 | 伊人天天狠天天添日日拍 | 在线视频区 | 91视频啊啊啊| 人人爽影院 | 精品色999 | 国产精品99久久免费黑人 | 在线观看深夜福利 | 97视频在线免费观看 | 亚洲综合一区二区精品导航 | 婷婷五天天在线视频 | 日韩电影久久久 | 精品在线不卡 | www.夜色321.com| 九色在线| 亚洲 综合 精品 | 国产一二区精品 | 国产午夜精品久久久久久久久久 | 人人爱在线视频 | 久久久免费精品 | 97超碰在线播放 | 91成人精品一区在线播放69 | 91理论片午午伦夜理片久久 | av在线等 | 日韩电影一区二区在线观看 | 国产一区二区三区免费观看视频 | 国产精品一区免费在线观看 | 日本黄区免费视频观看 | 欧美福利久久 | 亚洲国产无 | 国产一区免费观看 | 日本女人的性生活视频 | av三级在线播放 | 国产精品久久久av | 亚洲五月婷 | a√资源在线 | 国产成人精品一区二区三区在线 | 99re亚洲国产精品 | 免费手机黄色网址 | 国产精品视频观看 | 天天操天天草 | 欧美精品亚洲精品 | 欧美日本不卡视频 | 亚洲最新视频在线 | 亚洲免费在线看 | 男女啪啪网站 | 少妇bbbb搡bbbb桶 | 日本成人中文字幕在线观看 | 久精品视频 | 日韩精品中文字幕在线观看 | 久久伊人精品天天 | 又黄又爽又湿又无遮挡的在线视频 | 久久九九九九 | 免费久久久久久 | 国产色中涩| 97在线观看视频 | 国产日韩精品一区二区在线观看播放 | 2000xxx影视| 久章草在线 | 亚洲精品久久久久久久不卡四虎 | 免费h精品视频在线播放 | 国产亚洲精品成人av久久ww | 91豆花在线观看 | 国产一区二区影院 | 狠狠色丁香久久婷婷综合五月 | 国产成人精品一区在线 | 久久亚洲影院 | 国产淫a | 在线看岛国av| 亚洲妇女av | 五月婷婷中文 | 日本 在线 视频 中文 有码 | 最近免费观看的电影完整版 | 99热国产精品 | 亚洲精品在线观看不卡 | 日韩精品久久久久久久电影99爱 | 伊人www22综合色 |