国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Promise必備知識匯總和面試情況

共 26096字,需瀏覽 53分鐘

 ·

2021-06-08 12:54

點擊上方 程序員成長指北,關(guān)注公眾號

回復1,加入高級 Node 進階交流群

來源:https://segmentfault.com/a/1190000039699000

作者:小磊

寫在前面

Javascript異步編程先后經(jīng)歷了四個階段,分別是Callback階段,Promise階段,Generator階段和Async/Await階段。Callback很快就被發(fā)現(xiàn)存在回調(diào)地獄和控制權(quán)問題,Promise就是在這個時間出現(xiàn),用以解決這些問題,Promise并非一個新事務(wù),而是按照一個規(guī)范實現(xiàn)的類,這個規(guī)范有很多,如 Promise/A,Promise/B,Promise/D以及 Promise/A 的升級版 Promise/A+,最終 ES6 中采用了 Promise/A+ 規(guī)范。后來出現(xiàn)的Generator函數(shù)以及Async函數(shù)也是以Promise為基礎(chǔ)的進一步封裝,可見Promise在異步編程中的重要性。

關(guān)于Promise的資料已經(jīng)很多,但每個人理解都不一樣,不同的思路也會有不一樣的收獲。這篇文章會著重寫一下Promise的實現(xiàn)以及筆者在日常使用過程中的一些心得體會。

實現(xiàn)Promise

規(guī)范解讀

Promise/A+規(guī)范主要分為術(shù)語、要求和注意事項三個部分,我們重點看一下第二部分也就是要求部分,以筆者的理解大概說明一下,具體細節(jié)參照完整版Promise/A+標準。

1、Promise有三種狀態(tài)pending,fulfilledrejected。(為了一致性,此文章稱fulfilled狀態(tài)為resolved狀態(tài))

  • 狀態(tài)轉(zhuǎn)換只能是pendingresolved或者pendingrejected;
  • 狀態(tài)一旦轉(zhuǎn)換完成,不能再次轉(zhuǎn)換。

2、Promise擁有一個then方法,用以處理resolvedrejected狀態(tài)下的值。

  • then方法接收兩個參數(shù)onFulfilledonRejected,這兩個參數(shù)變量類型是函數(shù),如果不是函數(shù)將會被忽略,并且這兩個參數(shù)都是可選的。
  • then方法必須返回一個新的promise,記作promise2,這也就保證了then方法可以在同一個promise上多次調(diào)用。(ps:規(guī)范只要求返回promise,并沒有明確要求返回一個新的promise,這里為了跟ES6實現(xiàn)保持一致,我們也返回一個新promise
  • onResolved/onRejected有返回值則把返回值定義為x,并執(zhí)行[[Resolve]](promise2, x);
  • onResolved/onRejected運行出錯,則把promise2設(shè)置為rejected狀態(tài);
  • onResolved/onRejected不是函數(shù),則需要把promise1的狀態(tài)傳遞下去。

3、不同的promise實現(xiàn)可以的交互。

  • 規(guī)范中稱這一步操作為promise解決過程,函數(shù)標示為[[Resolve]](promise, x),promise為要返回的新promise對象,xonResolved/onRejected的返回值。如果xthen方法且看上去像一個promise,我們就把x當成一個promise的對象,即thenable對象,這種情況下嘗試讓promise接收x的狀態(tài)。如果x不是thenable對象,就用x的值來執(zhí)行 promise
  • [[Resolve]](promise, x)函數(shù)具體運行規(guī)則:
    • 如果 promise 和 x 指向同一對象,以 TypeError 為據(jù)因拒絕執(zhí)行 promise;
    • 如果 x 為 Promise ,則使 promise 接受 x 的狀態(tài);
    • 如果 x 為對象或者函數(shù),取x.then的值,如果取值時出現(xiàn)錯誤,則讓promise進入rejected狀態(tài),如果then不是函數(shù),說明x不是thenable對象,直接以x的值resolve,如果then存在并且為函數(shù),則把x作為then函數(shù)的作用域this調(diào)用,then方法接收兩個參數(shù),resolvePromiserejectPromise,如果resolvePromise被執(zhí)行,則以resolvePromise的參數(shù)value作為x繼續(xù)調(diào)用[[Resolve]](promise, value),直到x不是對象或者函數(shù),如果rejectPromise被執(zhí)行則讓promise進入rejected狀態(tài);
    • 如果 x 不是對象或者函數(shù),直接就用x的值來執(zhí)行promise。

代碼實現(xiàn)

規(guī)范解讀第1條,代碼實現(xiàn):

class Promise {
  // 定義Promise狀態(tài),初始值為pending
  status = 'pending';
  // 狀態(tài)轉(zhuǎn)換時攜帶的值,因為在then方法中需要處理Promise成功或失敗時的值,所以需要一個全局變量存儲這個值
  data = '';

  // Promise構(gòu)造函數(shù),傳入?yún)?shù)為一個可執(zhí)行的函數(shù)
  constructor(executor) {
    // resolve函數(shù)負責把狀態(tài)轉(zhuǎn)換為resolved
    function resolve(value) {
      this.status = 'resolved';
      this.data = value;
    }
    // reject函數(shù)負責把狀態(tài)轉(zhuǎn)換為rejected
    function reject(reason) {
      this.status = 'rejected';
      this.data = reason;
    }

    // 直接執(zhí)行executor函數(shù),參數(shù)為處理函數(shù)resolve, reject。因為executor執(zhí)行過程有可能會出錯,錯誤情況需要執(zhí)行reject
    try {
      executor(resolve, reject);
    } catch(e) {
      reject(e)
    }
  }
}

第1條就是實現(xiàn)完畢了,相對簡單,配合代碼注釋很容易理解。

規(guī)范解讀第2條,代碼實現(xiàn):

  /**
    * 擁有一個then方法
    * then方法提供:狀態(tài)為resolved時的回調(diào)函數(shù)onResolved,狀態(tài)為rejected時的回調(diào)函數(shù)onRejected
    * 返回一個新的Promise
  */
  then(onResolved, onRejected) {
    // 設(shè)置then的默認參數(shù),默認參數(shù)實現(xiàn)Promise的值的穿透
    onResolved = typeof onResolved === 'function' ? onResolved : function(v) { return e };
    onRejected = typeof onRejected === 'function' ? onRejected : function(e) { throw e };
    
    let promise2;
    
    promise2 =  new Promise((resolve, reject) => {
      // 如果狀態(tài)為resolved,則執(zhí)行onResolved
      if (this.status === 'resolved') {
        try {
          // onResolved/onRejected有返回值則把返回值定義為x
          const x = onResolved(this.data);
          // 執(zhí)行[[Resolve]](promise2, x)
          resolvePromise(promise2, x, resolve, reject);
        } catch (e) {
          reject(e);
        }
      }
      // 如果狀態(tài)為rejected,則執(zhí)行onRejected
      if (this.status === 'rejected') {
        try {
          const x = onRejected(this.data);
          resolvePromise(promise2, x, resolve, reject);
        } catch (e) {
          reject(e);
        }
      }
    });
    
    return promise2;
  }

現(xiàn)在我們就按照規(guī)范解讀第2條,實現(xiàn)了上述代碼,上述代碼很明顯是有問題的,問題如下

  1. resolvePromise未定義;
  2. then方法執(zhí)行的時候,promise可能仍然處于pending狀態(tài),因為executor中可能存在異步操作(實際情況大部分為異步操作),這樣就導致onResolved/onRejected失去了執(zhí)行時機;
  3. onResolved/onRejected這兩個函數(shù)需要異步調(diào)用(官方Promise實現(xiàn)的回調(diào)函數(shù)總是異步調(diào)用的)。

解決辦法:

  1. 根據(jù)規(guī)范解讀第3條,定義并實現(xiàn)resolvePromise函數(shù);
  2. then方法執(zhí)行時如果promise仍然處于pending狀態(tài),則把處理函數(shù)進行儲存,等resolve/reject函數(shù)真正執(zhí)行的的時候再調(diào)用。
  3. promise.then屬于微任務(wù),這里我們?yōu)榱朔奖?,用宏任?wù)setTiemout來代替實現(xiàn)異步,具體細節(jié)特別推薦這篇文章。

好了,有了解決辦法,我們就把代碼進一步完善:

class Promise {
  // 定義Promise狀態(tài)變量,初始值為pending
  status = 'pending';
  // 因為在then方法中需要處理Promise成功或失敗時的值,所以需要一個全局變量存儲這個值
  data = '';
  // Promise resolve時的回調(diào)函數(shù)集
  onResolvedCallback = [];
  // Promise reject時的回調(diào)函數(shù)集
  onRejectedCallback = [];

  // Promise構(gòu)造函數(shù),傳入?yún)?shù)為一個可執(zhí)行的函數(shù)
  constructor(executor) {
    // resolve函數(shù)負責把狀態(tài)轉(zhuǎn)換為resolved
    function resolve(value) {
      this.status = 'resolved';
      this.data = value;
      for (const func of this.onResolvedCallback) {
        func(this.data);
      }
    }
    // reject函數(shù)負責把狀態(tài)轉(zhuǎn)換為rejected
    function reject(reason) {
      this.status = 'rejected';
      this.data = reason;
      for (const func of this.onRejectedCallback) {
        func(this.data);
      }
    }

    // 直接執(zhí)行executor函數(shù),參數(shù)為處理函數(shù)resolve, reject。因為executor執(zhí)行過程有可能會出錯,錯誤情況需要執(zhí)行reject
    try {
      executor(resolve, reject);
    } catch(e) {
      reject(e)
    }
  }
  /**
    * 擁有一個then方法
    * then方法提供:狀態(tài)為resolved時的回調(diào)函數(shù)onResolved,狀態(tài)為rejected時的回調(diào)函數(shù)onRejected
    * 返回一個新的Promise
  */
  then(onResolved, onRejected) {

    // 設(shè)置then的默認參數(shù),默認參數(shù)實現(xiàn)Promise的值的穿透
    onResolved = typeof onResolved === 'function' ? onResolved : function(v) { return e };
    onRejected = typeof onRejected === 'function' ? onRejected : function(e) { throw e };

    let promise2;

    promise2 =  new Promise((resolve, reject) => {
      // 如果狀態(tài)為resolved,則執(zhí)行onResolved
      if (this.status === 'resolved') {
        setTimeout(() => {
          try {
            // onResolved/onRejected有返回值則把返回值定義為x
            const x = onResolved(this.data);
            // 執(zhí)行[[Resolve]](promise2, x)
            this.resolvePromise(promise2, x, resolve, reject);
          } catch (e) {
            reject(e);
          }
        }, 0);
      }
      // 如果狀態(tài)為rejected,則執(zhí)行onRejected
      if (this.status === 'rejected') {
        setTimeout(() => {
          try {
            const x = onRejected(this.data);
            this.resolvePromise(promise2, x, resolve, reject);
          } catch (e) {
            reject(e);
          }
        }, 0);
      }
      // 如果狀態(tài)為pending,則把處理函數(shù)進行存儲
      if (this.status = 'pending') {
        this.onResolvedCallback.push(() => {
          setTimeout(() => {
            try {
              const x = onResolved(this.data);
              this.resolvePromise(promise2, x, resolve, reject);
            } catch (e) {
              reject(e);
            }
          }, 0);
        });

        this.onRejectedCallback.push(() => {
          setTimeout(() => {
            try {
              const x = onRejected(this.data);
              this.resolvePromise(promise2, x, resolve, reject);
            } catch (e) {
              reject(e);
            }
          }, 0);
        });
      }

    });

    return promise2;
  }

  // [[Resolve]](promise2, x)函數(shù)
  resolvePromise(promise2, x, resolve, reject) {
    
  }
  
}

至此,規(guī)范中關(guān)于then的部分就全部實現(xiàn)完畢了。代碼添加了詳細的注釋,參考注釋不難理解。

規(guī)范解讀第3條,代碼實現(xiàn):

// [[Resolve]](promise2, x)函數(shù)
  resolvePromise(promise2, x, resolve, reject) {
    let called = false;

    if (promise2 === x) {
      return reject(new TypeError('Chaining cycle detected for promise!'))
    }
    
    // 如果x仍然為Promise的情況
    if (x instanceof Promise) {
      // 如果x的狀態(tài)還沒有確定,那么它是有可能被一個thenable決定最終狀態(tài)和值,所以需要繼續(xù)調(diào)用resolvePromise
      if (x.status === 'pending') {
        x.then(function(value) {
          resolvePromise(promise2, value, resolve, reject)
        }, reject)
      } else { 
        // 如果x狀態(tài)已經(jīng)確定了,直接取它的狀態(tài)
        x.then(resolve, reject)
      }
      return
    }
  
    if (x !== null && (Object.prototype.toString(x) === '[object Object]' || Object.prototype.toString(x) === '[object Function]')) {
      try {
        // 因為x.then有可能是一個getter,這種情況下多次讀取就有可能產(chǎn)生副作用,所以通過變量called進行控制
        const then = x.then 
        // then是函數(shù),那就說明x是thenable,繼續(xù)執(zhí)行resolvePromise函數(shù),直到x為普通值
        if (typeof then === 'function') { 
          then.call(x, (y) => { 
            if (called) return;
            called = true;
            this.resolvePromise(promise2, y, resolve, reject);
          }, (r) => {
            if (called) return;
            called = true;
            reject(r);
          })
        } else { // 如果then不是函數(shù),那就說明x不是thenable,直接resolve x
          if (called) return ;
          called = true;
          resolve(x);
        }
      } catch (e) {
        if (called) return;
        called = true;
        reject(e);
      }
    } else {
      resolve(x);
    }
  }

這一步驟非常簡單,只要按照規(guī)范轉(zhuǎn)換成代碼即可。

最后,完整的Promise按照規(guī)范就實現(xiàn)完畢了,是的,規(guī)范里并沒有規(guī)定catch、Promise.resolve、Promise.reject、Promise.all等方法,接下來,我們就看一看Promise的這些常用方法。

Promise其他方法實現(xiàn)

1、catch方法

catch方法是對then方法的封裝,只用于接收reject(reason)中的錯誤信息。因為在then方法中onRejected參數(shù)是可不傳的,不傳的情況下,錯誤信息會依次往后傳遞,直到有onRejected函數(shù)接收為止,因此在寫promise鏈式調(diào)用的時候,then方法不傳onRejected函數(shù),只需要在最末尾加一個catch()就可以了,這樣在該鏈條中的promise發(fā)生的錯誤都會被最后的catch捕獲到。

  catch(onRejected) {
    return this.then(null, onRejected);
  }
2、done方法

catchpromise鏈式調(diào)用的末尾調(diào)用,用于捕獲鏈條中的錯誤信息,但是catch方法內(nèi)部也可能出現(xiàn)錯誤,所以有些promise實現(xiàn)中增加了一個方法done,done相當于提供了一個不會出錯的catch方法,并且不再返回一個promise,一般用來結(jié)束一個promise鏈。

  done() {
    this.catch(reason => {
      console.log('done', reason);
      throw reason;
    });
  }
3、finally方法

finally方法用于無論是resolve還是rejectfinally的參數(shù)函數(shù)都會被執(zhí)行。

  finally(fn) {
    return this.then(value => {
      fn();
      return value;
    }, reason => {
      fn();
      throw reason;
    });
  };
4、Promise.all方法

Promise.all方法接收一個promise數(shù)組,返回一個新promise2,并發(fā)執(zhí)行數(shù)組中的全部promise,所有promise狀態(tài)都為resolved時,promise2狀態(tài)為resolved并返回全部promise結(jié)果,結(jié)果順序和promise數(shù)組順序一致。如果有一個promiserejected狀態(tài),則整個promise2進入rejected狀態(tài)。

  static all(promiseList) {
    return new Promise((resolve, reject) => {
      const result = [];
      let i = 0;
      for (const p of promiseList) {
        p.then(value => {
          result[i] = value;
          if (result.length === promiseList.length) {
            resolve(result);
          }
        }, reject);
        i++;
      }
    });
  }
5、Promise.race方法

Promise.race方法接收一個promise數(shù)組, 返回一個新promise2,順序執(zhí)行數(shù)組中的promise,有一個promise狀態(tài)確定,promise2狀態(tài)即確定,并且同這個promise的狀態(tài)一致。

  static race(promiseList) {
    return new Promise((resolve, reject) => {
      for (const p of promiseList) {
        p.then((value) => {
          resolve(value);   
        }, reject);
      }
    });
  }
6、Promise.resolve方法/Promise.reject

Promise.resolve用來生成一個rejected完成態(tài)的promisePromise.reject用來生成一個rejected失敗態(tài)的promise。

  static resolve(value) {
    let promise;

    promise = new Promise((resolve, reject) => {
      this.resolvePromise(promise, value, resolve, reject);
    });
  
    return promise;
  }
  
  static reject(reason) {
    return new Promise((resolve, reject) => {
      reject(reason);
    });
  }

常用的方法基本就這些,Promise還有很多擴展方法,這里就不一一展示,基本上都是對then方法的進一步封裝,只要你的then方法沒有問題,其他方法就都可以依賴then方法實現(xiàn)。

Promise面試相關(guān)

面試相關(guān)問題,筆者只說一下我司這幾年的情況,并不能代表全部情況,參考即可。Promise是我司前端開發(fā)職位,nodejs開發(fā)職位,全棧開發(fā)職位,必問的一個知識點,主要問題會分布在Promise介紹、基礎(chǔ)使用方法以及深層次的理解三個方面,問題一般在3-5個,根據(jù)面試者回答情況會適當增減。

1、簡單介紹下Promise。

Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強大。它由社區(qū)最早提出和實現(xiàn),ES6 將其寫進了語言標準,統(tǒng)一了用法,原生提供了Promise對象。有了Promise對象,就可以將異步操作以同步操作的流程表達出來,避免了層層嵌套的回調(diào)函數(shù)。此外,Promise對象提供統(tǒng)一的接口,使得控制異步操作更加容易。(當然了也可以簡單介紹promise狀態(tài),有什么方法,callback存在什么問題等等,這個問題是比較開放的)

  • 提問概率:99%
  • 評分標準:人性化判斷即可,此問題一般作為引入問題。
  • 加分項:熟練說出Promise具體解決了那些問題,存在什么缺點,應用方向等等。
2、實現(xiàn)一個簡單的,支持異步鏈式調(diào)用的Promise類。

這個答案不是固定的,可以參考最簡實現(xiàn) Promise,支持異步鏈式調(diào)用

  • 提問概率:50%(手擼代碼題,因為這類題目比較耗費時間,一場面試并不會出現(xiàn)很多,所以出現(xiàn)頻率不是很高,但卻是必備知識)
  • 加分項:基本功能實現(xiàn)的基礎(chǔ)上有onResolved/onRejected函數(shù)異步調(diào)用,錯誤捕獲合理等亮點。
3、Promise.then在Event Loop中的執(zhí)行順序。(可以直接問,也可以出具體題目讓面試者回答打印順序)

JS中分為兩種任務(wù)類型:macrotaskmicrotask,其中macrotask包含:主代碼塊,setTimeoutsetInterval,setImmediate等(setImmediate規(guī)定:在下一次Event Loop(宏任務(wù))時觸發(fā));microtask包含:Promise,process.nextTick等(在node環(huán)境下,process.nextTick的優(yōu)先級高于PromiseEvent Loop中執(zhí)行一個macrotask任務(wù)(棧中沒有就從事件隊列中獲取)執(zhí)行過程中如果遇到microtask任務(wù),就將它添加到微任務(wù)的任務(wù)隊列中,macrotask任務(wù)執(zhí)行完畢后,立即執(zhí)行當前微任務(wù)隊列中的所有microtask任務(wù)(依次執(zhí)行),然后開始下一個macrotask任務(wù)(從事件隊列中獲?。?瀏覽器運行機制可參考這篇文章

  • 提問概率:75%(可以理解為4次面試中3次會問到,順便可以考察面試者對JS運行機制的理解)
  • 加分項:擴展講述瀏覽器運行機制。
4、闡述Promise的一些靜態(tài)方法。

Promise.deferredPromise.all、Promise.racePromise.resolve、Promise.reject

  • 提問概率:25%(相對基礎(chǔ)的問題,一般在其他問題回答不是很理想的情況下提問,或者為了引出下一個題目而提問)
  • 加分項:越多越好
5、Promise存在哪些缺點。

1、無法取消Promise,一旦新建它就會立即執(zhí)行,無法中途取消。2、如果不設(shè)置回調(diào)函數(shù),Promise內(nèi)部拋出的錯誤,不會反應到外部。3、吞掉錯誤或異常,錯誤只能順序處理,即便在Promise鏈最后添加catch方法,依然可能存在無法捕捉的錯誤(catch內(nèi)部可能會出現(xiàn)錯誤) 4、閱讀代碼不是一眼可以看懂,你只會看到一堆then,必須自己在then的回調(diào)函數(shù)里面理清邏輯。

  • 提問概率:25%(此問題作為提高題目,出現(xiàn)概率不高)
  • 加分項:越多越合理越好(網(wǎng)上有很多說法,不一一佐證) (此題目,歡迎大家補充答案)
6、使用Promise進行順序(sequence)處理。

1、使用async函數(shù)配合await或者使用generator函數(shù)配合yield。2、使用promise.then通過for循環(huán)或者Array.prototype.reduce實現(xiàn)。

function sequenceTasks(tasks) {
    function recordValue(results, value) {
        results.push(value);
        return results;
    }
    var pushValue = recordValue.bind(null, []);
    return tasks.reduce(function (promise, task) {
        return promise.then(() => task).then(pushValue);
    }, Promise.resolve());
}
  • 提問概率:90%(我司提問概率極高的題目,即能考察面試者對promise的理解程度,又能考察編程邏輯,最后還有bindreduce等方法的運用)
  • 評分標準:說出任意解決方法即可,其中只能說出async函數(shù)和generator函數(shù)的可以得到20%的分數(shù),可以用promise.then配合for循環(huán)解決的可以得到60%的分數(shù),配合Array.prototype.reduce實現(xiàn)的可以得到最后的20%分數(shù)。
7、如何停止一個Promise鏈?

在要停止的promise鏈位置添加一個方法,返回一個永遠不執(zhí)行resolve或者rejectPromise,那么這個promise永遠處于pending狀態(tài),所以永遠也不會向下執(zhí)行thencatch了。這樣我們就停止了一個promise鏈。

    Promise.cancel = Promise.stop = function() {
      return new Promise(function(){})
    }
  • 提問概率:50%(此問題主要考察面試者羅輯思維) (此題目,歡迎大家補充答案)
8、Promise鏈上返回的最后一個Promise出錯了怎么辦?

catchpromise鏈式調(diào)用的末尾調(diào)用,用于捕獲鏈條中的錯誤信息,但是catch方法內(nèi)部也可能出現(xiàn)錯誤,所以有些promise實現(xiàn)中增加了一個方法donedone相當于提供了一個不會出錯的catch方法,并且不再返回一個promise,一般用來結(jié)束一個promise鏈。

  done() {
    this.catch(reason => {
      console.log('done', reason);
      throw reason;
    });
  }
  • 提問概率:90%(同樣作為出題率極高的一個題目,充分考察面試者對promise的理解程度)
  • 加分項:給出具體的done()方法代碼實現(xiàn)
9、Promise存在哪些使用技巧或者最佳實踐?

1、鏈式promise要返回一個promise,而不只是構(gòu)造一個promise。2、合理的使用Promise.allPromise.race等方法。3、在寫promise鏈式調(diào)用的時候,then方法不傳onRejected函數(shù),只需要在最末尾加一個catch()就可以了,這樣在該鏈條中的promise發(fā)生的錯誤都會被最后的catch捕獲到。如果catch()代碼有出現(xiàn)錯誤的可能,需要在鏈式調(diào)用的末尾增加done()函數(shù)。

  • 提問概率:10%(出題概率極低的一個題目)
  • 加分項:越多越好

(此題目,歡迎大家補充答案)

至此,我司關(guān)于Promise的一些面試題目就列舉完畢了,有些題目的答案是開放的,歡迎大家一起補充完善??偨Y(jié)起來,Promise作為js面試必問部分還是相對容易掌握并通過的。

總結(jié)

Promise作為所有js開發(fā)者的必備技能,其實現(xiàn)思路值得所有人學習,通過這篇文章,希望小伙伴們在以后編碼過程中能更加熟練、更加明白的使用Promise。

最后

如果覺得這篇文章還不錯
點擊下面卡片關(guān)注我
來個【分享、點贊、在看】三連支持一下吧

   “分享、點贊、在看” 支持一波  

瀏覽 33
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 天天日天天干天天干| 日韩成人高清| 中文字幕日韩一| 日韩黄色小说| 亚洲乱伦中文字幕| 大帝av| 男人av网站| AA无码| 免费色片| 五月天婷婷影院影院| 91人兽| 91人妻人人澡人人爽| 青青草在线播放| а中文在线天堂精品| 一本色道无码人妻精品| 久久99影院| 99在线免费观看| 精品乱子伦一区二区三区免费播放 | 中文字幕av一区二区| www亚洲视频| 欧美国产日韩视频| 色色免费黄色视频| 黄色视频在线观看网站| 黄色美女视频网站| 中国免费一级无码成人片| 久久久久久9| 毛片性爱视屏| 色丁香视频在线观看的| 色播五月丁香| 国产高清Av| 北条麻妃被躁57分钟视频在线| 美日韩AV| 91精品少妇高潮一区二区三区不卡| 精品少妇3p| 成人免费毛片AAAAAA片| 午夜神马福利| 爱搞搞网| 国产丝袜在线视频| 成功精品影院| 欧美日韩肏屄视频| 亚洲北条麻妃一级A片| 人人妻人人摸| 九九九亚洲| 国产成人精品免高潮在线人与禽一| 91干逼| 丰满熟妇高潮呻吟无码| 做爱视频91| 三级免费无限AV| 国产AV一级片| 91精品久久久久久粉嫩| 日本中文在线观看| 青青草逼视频| 日本一级片免费看| 麻豆黄色电影| 日韩三级片av| 免费毛片视频| 五月婷婷av| 亚洲无码AV一区二区三区| 最新中文字幕在线观看视频| 亚洲欧美天堂| 夜夜撸天天操| 波多野结衣AV网站| 精品国产免费无码久久噜噜噜AV| 亚洲高清国产欧美综合s8| 精品操逼| 婷婷精品国产a久久综合| 真实野外打野视频| 久久牛牛| 亚洲精品国产AV婷婷| 凸凹翔田千里无码| 欧美aaaaaa| 777av| 国产福利网站| 久久精品国产99精品国产亚洲性色 | 国产一级a毛一级a毛观看视频网站www.jn | 青春草在线视频免费观看| 五月丁香激情六月| 亚洲日韩欧美性爱| 一道本在线| 91乱子伦国产乱子伦| 免费大黄网站| 日韩欧美精品18| 色欲欲www成人网站| 天天日人人| 精品素人在线| 欧美不卡在线观看| 婷婷色吧| 在线高清无码不卡| 大鸡吧成人视频| 亚洲色图欧美| 日韩精品久久| AV在线免费观看网站| 91人妻无码精品蜜桃| 黄片网站在线看| 国产福利免费| 亚人精品中文字幕在线观看| 丁香五月五月婷婷| 天天艹夜夜| 一级欧美黑人大战白妞| 国产一级a一片成人AV| 天堂网av2014| 性爱91视频| 午夜传媒一区二区三区| 丝瓜污视频| 操b视频免费| 欧美日韩一级黄色片| 激情网站免费| 巨乳一区二区三区| 亚洲高潮| 国产欧美在线免费观看| 色情片在线播放| 久草大香蕉在线视频| 一本色道久久综合熟妇人妻| 思思热在线视频播放| 成人亚洲精品一区二区三区| 人人澡人人爽欧一区| 色色视频免费看| 四川少妇搡bbbb搡bbbb| 丁香五月一区二区| 自拍毛片| 国产青娱乐在线视频| 98在线++传媒麻豆的视频| a色视频| 中文字幕在线观看完整av| 韩国高清无码| www.大吊视频| 久久欧洲成人精品无码区| 午夜福利干B在线免费小视频| 亚洲激情视频| 2019中文字幕在线免费观看| 土耳其电影《爱与罚》| 91亚洲精品久久久久蜜桃| 午夜福利干B在线免费小视频| 欧美激情色色| 中文字幕视频在线直播| 成人手机AV| 狠狠色一区| 91丨九色丨蝌蚪丨肥女| 亚洲福利天堂| 欧美在线观看一区二区| 操美女嫩逼| 俺来俺去www色婷婷| 特级毛片AAAAAA蜜桃| 成人A电影| 青娱乐国产精品| 在线免费观看国产视频| 久久久伊人网| 中文√在线天堂8| 国产美女在线观看| 超碰黄片| 国产一区二区三区免费观看| 手机看片国产| 夜色视频网| www污| 无码精品人妻| 午夜福利91| 国产一级婬片A片免费无成人黑豆| 能看的av网站| 免费视频一二三区| 欧美成人a片| 午夜无码人妻AV| 国产在线小电影| 91视频久久| 国产欧美一区二区| 日韩A级片| 99热免费| 2025四虎在线视频观看| 91亚洲国产成人| 俺也来俺也去WWW色| 特级西西444www大胆高清图片| 五月婷婷视频在线观看| 亚洲黄色一级电影| 亚洲一级性爱| 99视频这里有精品| 欧美不卡一区二区三区| A片视频在线观看| 日韩黄色av| 日本女人操逼视频| 亚洲精品无码在线观看| 精品国产乱子伦一区二区三区,小小扐 | 中文无码99| 黄色片网站视频| 在线观看AV网站| 亚洲黄色电影在线| 狠狠色五月亚洲91| 欧美日韩爱爱| 99热中文| 在线大香蕉| 91无码| 人妻丝袜蕾丝高跟双飞| 日韩性爱网址| 国产成人无码精品一区秘二区| 九七精品| 99性爱| wwwxxx18| 学生妹做爱视频| 一区二区三区不卡视频| 美女av日逼| 91色色网| 特级黄色A片| 日韩一区二区高清无码| 亚洲无码AV网站| 久久超碰精品| 婷婷在线综合| 大香蕉伊人视频在线观看| 91视频在线| 亚洲AV综合色区无码国产播放 | 国产Av婬乱麻豆| 蜜桃无码一区| 色婷婷18正码国产| 97精品视频在线观看| 亚州成人| 国产精品毛片| 3D动漫精品啪啪一区二区| 一本久久综合亚洲鲁鲁五月天| 国产精品你懂得| 91乱子伦国产乱| 欧美sese| 爆乳一区二区三区AV| 在线日韩一区二区| 欧美黄色成人视频| 天天插天天日| 欧美午夜福利电影| 91精品久久人妻一区二区夜夜夜 | 伊人666| 成人免费看A片| 国产AV三级| 69成人网站| 色伊人久操视频| 91嫖妓站街埯店老熟女| 无码日韩人妻精品久久蜜桃| 国产高清一区二区| 欧美伊人| 港澳日韩黄片| 色欲久久久| 伊人999| 久草天堂| 亚洲精品18在线观看| 亚洲男人的天堂av| 欧美成人精品激情在线视频| 免费小视频| 成人肏逼视频在线| 豆花视频在线免费观看| 91乱子伦国产乱| 国产一区二区三区免费| 麻豆回家视频区一区二| 欧美亚洲三级片| 国产精品久久久久久久久借妻 | 男女做爱视频网站| 国产AV影视| 中文字幕线观看| 欧美国产第一页| 成人毛片100免费观看| www在线| 啪啪视频国产| 日韩一区二区高清无码| 欧美性综合| 高清无码三级片| 91香蕉国产成人App| 红桃91人妻爽人妻爽| 人人色人人操人人干| 中文精品字幕人妻熟女| 国产大奶一区二区| 高清无码成人视频| 插菊花综合网站| 久久久毛片| 暴操美女网站| 欧美色图另类图片| 毛片毛片毛片毛片毛片毛片| 人人妻人人骑| 黄p网站| 无码人妻一区二区三区在线视频不卡 | 欧美日韩成人网站| 激情成人五月天| 大香蕉久操| 国产91一区在线精品| 亚洲色图欧美在线| 北条麻妃精品| 亚洲操操操| 国产一级黄色毛片| 亚洲黄色免费观看| 51午夜| 99re6热在线精品视频功能| 狠狠色五月| 尤物视频官网| 中文字幕在线观看av| 欧美日韩一区二区三区四区五区六区 | 中文字幕北条麻妃| 欧美操人| 久久精品在线观看| 色欲色欲一区二区三区| 日本三级黄色| 少妇搡BBBB搡BBBB毛多多| 亚洲精品国产精品乱码不卡√香蕉| 午夜天堂在线观看| 日韩在线视频网站| 日本三级黄色视频| 蜜桃AV无码一区二区三区| 黄色资源在线观看| 中文字幕日韩欧美在线| 欧美熟妇搡BBBB搡BBBBB| 爱爱黄色视频| 久久99精品国产麻豆婷婷洗澡| 自拍偷拍激情视频| 狠狠干影院| 蜜桃网一区二区| 91丨九色丨蝌蚪丨丝袜| 天堂成人| 成人毛片视频网站| 欧美一区二区三区精品| 免费成人黄视频| 亚洲成人在线观看视频| 亚洲视频国产| 日韩中文无码一级A片| 丁香五月情| 狠狠地操| 永久中文字幕| 一区二区网站| 体内射精免费视频| 四虎日韩| 伊人久久婷婷| 国产又粗又长又硬又大毛苴茸图片 | 午夜福利在线播放| 正在播放JUQ-878木下凛凛子| 人妻丝袜中出北条麻妃| 亚洲无码AV在线观看| 91蜜桃在线| 日本v片| 国产乱伦对白| 欧美第一页| 久久人妻精品| 内射视频在线观看| 揉BBB搡BBB搡BBB| 亚洲最大的成人网站| 日本精品久久| 免费无码婬片AAAA片老婦| 波多野结衣成人视频| 日韩AV在线天堂| 久久99久久99久久99| 台湾省成人网站| 自拍偷拍激情视频| 国产56页| 人人舔人人爱| 黄色AV免费| 人妻公日日澡久久久| 国产成人亚洲综合AV婷婷| 视频一区中文字幕| 一本道精品在线| www欧美日韩| 激情小说亚洲图片:伦| 亚洲AV成人无码精品区| 婷婷色色五月天| 日韩欧美大片在线观看| 一本色道久久综合亚洲二区三区| 国产AV高潮| 一本道综合网| 久久久一区二区| av网站免费在线观看| 婷婷精品国产a久久综合| 国产男女无套免费| 在线有区别亚洲| 91东热激情| 国产美女一级真毛片酒店| 人操人| 国产高清第一页| 国产56页| 人人射人人射| 国产VA| 精品人妻无码一区二区三区| 亚洲国产黄色视频| 蜜臀AV一区二区三区免费看| 亚洲高清成人| 一区二区免费| 欧美精品一卡二卡| 国产高清AV| 久久久精品久久久| 欧美成人精品无码网站| 一级黄色视频免费观看| 日日天天| 翔田千里在线观看| 四虎精品一区二区三区| 国产中文字幕免费| 男人的天堂在线视频| 韩国无码视频在线观看| 日韩激情在线| 五月大香蕉| 国产无码电影| 青娱乐| 久久国产免费| 人妻少妇偷人精品久久| 无码国产精品一区二区免费96| 日韩无码一二三区| 露脸丨91丨九色露脸| 四虎www| 久久av一区二区三区| 美女特黄视频| 一区二区高清无码| 99久re热视频精品98| 亚洲AV无码乱码| 天天射夜夜操| 国产三级| 在线观看黄视频| 少妇无码| 五月婷婷丁香在线| 久久精品视频观看| 日韩AV一级片| 色婷婷Av一区| 久草福利在线视频| 色综合社区| 日韩有码第一页| 亚洲成免费| 欧美一卡二卡三卡| 欧美在线一级片| 91成人福利| 日韩一区二区三区四区久久久精品有吗| 91啪啪视频| 丁香久久婷婷| 日韩精品人妻一区二区| 亚洲福利免费观看| 久久黄色片| 99操逼网| 午夜黄片| 欧美一区二区在线视频| 影音先锋女人aV鲁色资源网站| 日本乱伦中文字幕| 国产精品久久一区二区三区影音先锋 | 一区二区三区无码专区| 亚洲黄色免费在线观看| 成人免费爱爱视频| 国产1区| 新版欧美内射大全| 成人影视亚洲| 在线观看视频免费无码免费视频| 日本一区二区三区免费看| 怡红院综合网| 豆花精品视频| 免费av在线播放| 亚洲国产综合AV在线| 泄火熟妇2-ThePorn| 精品无码一区二区三区蜜桃李宗瑞 | 国产黄色免费网站| 国产精品99视频| a色视频| 91丨熟女丨对白| 亚洲中文字幕无码爆乳av| 久久综合五月| 日韩第22页| 大香蕉久操| 成人在线综合| 欧美footjob| 91嫩逼| 91亚瑟视频| av在线免费播放| 东方av在线免费观看| 国产AV日韩AⅤ亚洲AV中文| 高清无码在线观看免费| 91精品国产一区三一| 亚洲午夜剧场| 99热精品国产| 日日Av| 久久爆乳一区二区三区| 一区二区在线免费观看| 亚洲啪啪网站| 国产91精品看黄网站在线观看| 亚洲美女网站免费观看网址| 人人人操| 欧美日韩视频在线播放| 99热99re6国产线播放| 久久久成人网| 美日韩免费视频| 三须三级久久三级久久18| 俺去俺来也www色视频| 国产精品欧美一区二区| 色五月视频在线| 欧美A√| 国产一级a毛一级a毛视频在线网站? | 婷婷五月天色色| 久久九九视频| 一级黄色片免费看| 五月婷婷六月香| 又大又粗AV| 亚洲视频第一页| 亚洲va在线| www.大香蕉伊人| 色男人的天堂| 欧美国产日本| 99热精品免费观看| 爱爱帝国综合社区| 337p大胆色噜噜噜噜噜| 亚洲日韩精品无码| 被男友内S~高H文| 人人妻人人爽人人精品| 99久久精品国产一区二区三区| 理论三级片| 亚洲A片在线观看| 天天射夜夜操| 国产婬片一级A片AAA毛片AⅤ| 国内老熟妇对白XXXXHD| 天堂在线www| 国产真实乱婬A片久久久老牛| 色五月婷婷AV| 日本中文字幕在线视频| AAA成人| 5252a我爱haose01我愿| 日本中文在线| 一级无码视频| 亚洲一区二区久久| 国产日本在线视频| 国产成人精品免费视频| 久久久久久久久久国产| 夜夜bb| 黄片视频免费看| 五月开心激情网| 中文字幕免费在线观看视频| 波多野结衣av在线观看窜天猴| 99久久精品国产一区色| 欧美中文字幕在线播放| 久久老女人| 国产91一区在线精品| AV777777| 黑丝一区| 亚洲免费视频在线观看| 久热无码| 亚洲视频中文| 欧美肉大捧一进一出小说| 日韩免费三级| 欧美日韩肏屄视频| 91丨九色丨国产在线| 亚洲无码日| 亚洲理论电影| 国产白浆一区二区三区| 天天插在线视频| 亚洲69| 日韩A片免费看| 俺也来最新色视频| 高清无码不卡AV| 韩国GOGOGO高清| 午夜撸一撸| 黄色A片视频| 成人久久电影| 操逼操| 99久久精品国产一区色| 91丨PORNY丨丰满人妻网站| 熟妇女人妻丰满少妇中文字幕| 久久婷婷网站| 操屄在线观看| 五十路老国产| 综合久久中文字幕| 超碰婷婷| 在线观看日韩欧美| 国产农村乱婬片A片AAA图片| 欧美精品18videosex性欧美| 超碰成人免费| 中文在线字幕免费观看| 91精品国产乱码久久久久| 伊人综合久久| 91无码视频在线观看| 操逼视频免费| 综合激情网| 午夜精品秘一区二区三区| 午夜免费视频| 免费的黄色A片| 黄页网站免费观看| 亚洲午夜在线| 日韩无码视屏| 97人人爽人人爽人人爽| 麻豆午夜福利| 亚洲无码二区| 人人干人人干| 亚洲制服在线观看| 99精品全国免费观看| 91香蕉视频免费| 久久久久国产精品视频| 99热最新| 伊人久操| 韩国无码专区| 天天操网址| 免费观看在线无码视频| 影音先锋AV无码| 人人爽网站| 韩剧《邻居的妻子》电视剧| 天天射日日干| 在线免费观看黄色片| 探花无码| 真人BBwBBWBBw另类视频| 精品久久免费一区二区三区| 99热精品久久| 中文字幕乱码免费综合久久| 国内特级毛片| 在线看色| 人人爱,人人操| 高清无码网址| a片视频免费| 亚洲精品久久久久久久蜜桃| 中文字幕66页| 最新va在线观看| 刘玥91精品一区二区三区| 大香蕉精品视频| 欧美色视频在线观看| 色综合久久久无码中文字幕999 | 久久成人福利| 蜜桃人妻无码AV天堂二区| 婷婷色片| 日韩影音| 婷婷在线视频| 久久不卡| 色香蕉视频| 国产在线h| 欧美色视频在线观看| 亚洲一级视频在线观看| 日本道在线视频| 欧美中文字| 午夜老湿机| 免费a片观看| 一级无码专区| 中文字幕无码不卡| 看毛片的网站| 亚洲免费专区| 中文字幕麻豆| 黄片免费看视频| 亚洲成人第一页| 欧美在线无码| 在线免费看黄视频| 亚洲天堂婷婷| 日韩精品无码一区二区三区| 瑟瑟免费视频| 52妺嘿嘿午夜福利在线| 日韩高清精品在线| 初学影院WWWBD英语完整版在线观看| www日韩| 国产高清不卡| 国产一区二区三区免费| 亚洲免费视频播放| 性爱视频无码| 激情无码国产| 男人天堂视频在线观看| 大香蕉1024| 无码A级片| 天天天天天天天操| 天堂网色| 日韩v片| 8050午夜一级| 国产操逼图片| www.无码视频| 无码任你操| 日韩va亚洲va欧美va高清| 九九热播精品| 国外成人在线视频老鸭窝| 九九99电影| 亚洲日韩视频| 波多野结衣一区二区| 黄片在线视频| 99久久99| 高清无码18| 久久久天堂| 天天日天天操天天射| 亚洲中文字幕在线免费观看视频| 三级三级久久三级久久18| 国产亚洲中文字幕| 在线看片你懂的| 免费观看黄色电影| 成人h视频| 丁香色五月婷婷| 91麻豆香蕉| 91精品丝袜久久久久久久久粉嫩| 黄色免费看| 久久一卡二卡| 国产日产亚洲精品| 无码窝在线观看| 国产91网| 成人免看一级a一片A片| 人妻天堂| 免费乱伦视频| 色五月天婷婷| 亚洲天堂一区二区| 边摸边操| 免费的AV| 在线免费观看黄| 欧美成人自拍| 影音先锋天堂| 青青草操逼视频| 特级444WWW大胆高清| 欧美性爱中文字幕| 欧一美一婬一伦一区| 国产精品一二三区| 最好看的MV中文字幕国语电影| 久久精品福利视频| 天堂一区二区三区| 99国产精品| 狠狠的操| 日韩99在线观看| 四虎激情影院| 久热这里| 男女啪网站| 久久中文无码| 无码人妻一区二区三一区免费n狂飙 | 国产超级无码高清在线视频观看 | 久久久久少妇| 天天草网| 97播播| 中文激情网| japanese在线观看| 日本成人A片| 精品无码人妻一区二区三区| 美女操逼图| 人妻黄色视频| 欧美性爱xxxx| 男人天堂色男人| 色欲亚洲| 波多野结衣亚洲| 伊人久久久| 欧美日韩成人在线| av毛片| 日韩无码网| 久久永久免费精品人妻专区| 日韩黄色免费视频| 日韩精品无码av| 99精品一区二区| 国产91嫩草乱婬A片2蜜臀| 国产无限资源| 国产七区| 国产综合区| 18禁无码永久免费网站大全| 91在线无码精品秘国产-百度| 韩国精品无码| 色丁香五月婷婷| 欧美大黑逼| 精品人妻中文字幕| 青青草原av| 色色网欧美| 国产三级AV在线观看| 无码做爰欢H肉动漫网站在线看| 欧美熟妇另类久久久久久不卡| 亚洲AV无码乱码国产| 久久免费播放视频| 黄色一级视频网站| 青春草在线观看国产| 国产成人午夜福利在线| 91无码电影| 亚洲精品久久久久中文字幕二区| 99免费视频| 久久这里有精品视频| 91国产人妻| AV资源免费| 在线免费看黄视频| 国产麻豆性爱视频| 久操视频免费| 免费一级无码婬片A片APP直播| 大香蕉一区二区三区| 大a片| 精品AV无码一区二区三区| WWW黄片| 中文免费高清在线| 亚洲黄色视频免费观看| 婷婷激情视频| 久操成人| 国产又爽又黄A片| 亚洲精品一区二区三区| 久草视频在线播放| AV无码国产| 欧美成人乱码一区二区三区| 黑人aV| 婷婷五月国产| 99ri国产| 亚洲一区二区av| 黄色片免费观看| 亚洲国产精品成人va在线观看 | 中文字幕在线观看日本| 亚洲天堂欧美| 成人一区二区三区四区| 国产激情在线观看| 久久精品片| 无码逼逼| 操美女大逼| 免费超碰在线| 青草视频在线播放| 国内操B电影| 国产成人A∨| 福利导航视频| 五月天婷婷久久| 豆花视频logo进入官网| 亚洲综合视频在线观看| 91中文字幕在线| 97人妻精品黄网站| 日韩AV资源网| 影音先锋成人在线资源| 日本熟妇高潮BBwBBwBBw| 亚洲黄片免费| 欧美视频免费| 大香蕉网站在线观看| 一区二区三区四区成人| 婷婷激情视频| 高清无码自拍| 国产色AV| 狼人亚洲伊人| 在线观看中文字幕亚洲| 婷婷婷色| 真实野外打野视频| 狠狠操网站| 日韩中文毛片| 老熟女网站| 五十路老国产| 91资源超碰| 天天摸天天操| 人人妻人人操人人爽| 牛牛久久| 老太老熟女城中层露脸60| 欧美一级aaa| 毛片内射| 天天撸天天干天天日| 高清毛片AAAAAAAAA郊外| 久久久久99精品成人片三人毛片| 中文字幕在线观看高清| 黄片免费大全| 亚洲在线视频网站| 亚洲AV成人一区二区三区不卡 | 色婷婷国产精品视频| 一区二区三区四区在线播放| 成人免费观看视频| 安徽少妇搡bbw搡bbbb| 精品国产AV无码一区二区三区 | 无码人妻一区二区三区在线视频不卡 | 丰满熟妇人妻无码视频| jizz国产精品| 黄色视频网站免费观看| 影音先锋AV资源网站| 在线视频A| 不卡视频一区二区| 成人午夜福利网站| 曰本精品综合网在线| 特级西西人体www高清大胆| 亚洲激情内射| 精品无码秘人妻一区二区三区| 女色综合| 毛片无遮挡| 国产精品揄拍500视频| 日韩精品久久| 人人干人人操人人爱| 荫蒂添的高潮免费视频| 有码一区二区三区| 日韩无码久久| 99精品一区二区三区| 黄色免费在线网站| 嫩草AV| www伦理片-韩国三级三级三级a三级-成人AV | 三级午夜在线无码| 久久久三级| 毛片入口| 国产成人AV免费无码| 亚洲aa| Av天堂图片在线| 日韩成人无码精品| 热久久这里只有精品| 在线大香蕉| 久久婷婷青青| 日韩中文字幕精品| 大香蕉久久爱| 国产又爽又黄视频| 97超碰碰碰| 国产三级av在线| 欧美一级视频| 国产精品伦子伦免费视频| 国产一片黑夜内射| 自拍偷拍综合| 噜噜噜噜射| 久久久五月| 99人妻人人爽人人添人人精品| 国内一级A片| 婷婷福利导航| 福利导航网| 综合五月婷婷| 国产青草视频| 日本爱爱免费视频| 欧美精品无码久久久精品酒店| 日韩成人免费在线观看| 午夜无码人妻AV| 国产美女一级特黄大片| 中文字幕在线观看有码| 国产精品午夜成人免费| 国产在线欧美在线白浆| 男女黄色免费网站| 91视频免费播放| 伊人激情| 日韩一本道在线| 人妻少妇一区| 欧美性爱香蕉视频| 日本黄色A片免费看| 亚洲另类色图| 91双飞会所双飞在线| 香蕉视频日韩| 一区二区三区四区免费观看| av不卡免费观看| 亚洲高清视频免费| 91久久综合亚洲鲁鲁五月天| 五月婷婷日韩| 久久免费视频6| 无码免费在线视频| 亚洲无码伊人| 午夜福利视频91| 99这里只有精品|