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

使用 axios 攔截器解決「 前端并發(fā)沖突 」 問題

共 8560字,需瀏覽 18分鐘

 ·

2023-11-09 16:45

大廠技術(shù)  高級前端  Node進階

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

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

背景

并發(fā)沖突問題, 是日常開發(fā)中一個比較常見的問題。

不同用戶在較短時間間隔內(nèi)變更數(shù)據(jù),或者某一個用戶進行的重復提交操作都可能導致并發(fā)沖突。

并發(fā)場景在開發(fā)和測試階段難以排查全面,出現(xiàn)線上 bug 以后定位困難,因此做好并發(fā)控制是前后端開發(fā)過程中都需要重視的問題。

對于同一用戶短時間內(nèi)重復提交數(shù)據(jù)的問題,前端通??梢韵茸鲆粚訑r截。

本文將討論前端如何利用 axios 的攔截器過濾重復請求,解決并發(fā)沖突。

一般的處理方式 — 每次發(fā)請求添加 loading

在嘗試 axios 攔截器之前,先看看我們之前業(yè)務(wù)是怎么處理并發(fā)沖突問題的:

每次用戶操作頁面上的控件(輸入框、按鈕等),向后端發(fā)送請求的時候,都給頁面對應(yīng)的控件添加 loading 效果,提示正在進行數(shù)據(jù)加載,同時也阻止 loading 效果結(jié)束前用戶繼續(xù)操作控件。

這是最直接有效的方式,如果你們前端團隊成員足夠細心耐心,擁有良好的編碼習慣,這樣就可以解決大部分用戶不小心重復提交帶來的并發(fā)問題了。

更優(yōu)的解決方案:axios 攔截器統(tǒng)一處理

項目中需要前端限制并發(fā)的場景這么多,我們當然要思考更優(yōu)更省事的方案。

既然是在每次發(fā)送請求的時候進行并發(fā)控制,那如果能重新封裝下發(fā)請求的公共函數(shù),統(tǒng)一處理重復請求實現(xiàn)自動攔截,就可以大大簡化我們的業(yè)務(wù)代碼。

項目使用的 axios 庫來發(fā)送 http 請求,axios 官方為我們提供了豐富的 API,我們來看看攔截請求需要用到的兩個核心 API:

1. interceptors

攔截器包括請求攔截器和響應(yīng)攔截器,可以在請求發(fā)送前或者響應(yīng)后進行攔截處理,用法如下:

// 添加請求攔截器
axios.interceptors.request.use(function (config) {
  // 在發(fā)送請求之前做些什么
  return config;
}, function (error) {
  // 對請求錯誤做些什么
  return Promise.reject(error);
});

// 添加響應(yīng)攔截器
axios.interceptors.response.use(function (response) {
    // 對響應(yīng)數(shù)據(jù)做點什么
    return response;
  }, function (error) {
    // 對響應(yīng)錯誤做點什么
    return Promise.reject(error);
  });

2. cancel token:

調(diào)用 cancel token API 可以取消請求。

官網(wǎng)提供了兩種方式來構(gòu)建 cancel token,我們采用這種方式:

通過傳遞一個 executor 函數(shù)到 CancelToken 的構(gòu)造函數(shù)來創(chuàng)建 cancel token,方便在上面的請求攔截器中檢測到重復請求可以立即執(zhí)行:

const CancelToken = axios.CancelToken;
let cancel;

axios.get('/user/12345', {
  cancelToken: new CancelToken(function executor(c) {
    // executor 函數(shù)接收一個 cancel 函數(shù)作為參數(shù)
    cancel = c;
  })
});

// cancel the request
cancel();

本文提供的思路就是利用 axios interceptors API 攔截請求,檢測是否有多個相同的請求同時處于 pending 狀態(tài),如果有就調(diào)用 cancel token API 取消重復的請求。

假如用戶重復點擊按鈕,先后提交了 A 和 B 這兩個完全相同(考慮請求路徑、方法、參數(shù))的請求,我們可以從以下幾種攔截方案中選擇其一:

  • 取消 A 請求,只發(fā)出 B 請求
  • 取消 B 請求,只發(fā)出 A 請求
  • 取消 B 請求,只發(fā)出 A 請求,把收到的 A 請求的返回結(jié)果也作為 B 請求的返回結(jié)果

第三種方案需要做監(jiān)聽處理增加了復雜性,結(jié)合我們實際的業(yè)務(wù)需求,最后采用了第二種方案來實現(xiàn),即:

只發(fā)第一個請求。在 A 請求還處于 pending 狀態(tài)時,后發(fā)的所有與 A 重復的請求都取消,實際只發(fā)出 A 請求,直到 A 請求結(jié)束(成功/失?。┎磐V箤@個請求的攔截。

具體實現(xiàn)

  1. 存儲所有 pending 狀態(tài)的請求

首先我們要將項目中所有的 pending 狀態(tài)的請求存儲在一個變量中,叫它 pendingRequests,

可以通過把 axios 封裝為一個單例模式的類,或者定義全局變量,來保證 pendingRequests 變量在每次發(fā)送請求前都可以訪問,并檢查是否為重復的請求。

let pendingRequests = new Map()

把每個請求的方法、url 和參數(shù)組合成一個字符串,作為標識該請求的唯一 key,同時也是 pendingRequests 對象的 key:

const requestKey = `${config.url}/${JSON.stringify(config.params)}/${JSON.stringify(config.data)}&request_type=${config.method}`;

幫助理解的小 tips:

  • 定義 pendingRequests 為 map 對象的目的是為了方便我們查詢它是否包含某個 key,以及添加和刪除 key。添加 key 時,對應(yīng)的 value 可以設(shè)置用戶自定義的一些功能參數(shù),后面擴展功能的時候會用到。
  • configaxios 攔截器中的參數(shù),包含當前請求的信息
  1. 在請求發(fā)出前檢查當前請求是否重復

    在請求攔截器中,生成上面的 requestKey,檢查 pendingRequests 對象中是否包含當前請求的 requestKey

    • 有:說明是重復的請求,cancel 掉當前請求
    • 沒有:把 requestKey 添加到 pendingRequests 對象中

因為后面的響應(yīng)攔截器中還要用到當前請求的 requestKey,為了避免踩坑,最好不要再次生成。

在這一步就把 requestKey 存回 axios 攔截器的 config 參數(shù)中,后面可以直接在響應(yīng)攔截器中通過 response.config.requestKey 取到。

代碼示例:

// 請求攔截器
axios.interceptors.request.use(
  (config) => {
    if (pendingRequests.has(requestKey)) {
      config.cancelToken = new axios.CancelToken((cancel) => {
        // cancel 函數(shù)的參數(shù)會作為 promise 的 error 被捕獲
        cancel(`重復的請求被主動攔截: ${requestKey}`);
      });
    } else {
      pendingRequests.set(requestKey, config);
      config.requestKey = requestKey;
    }
    return config;
  },
  (error) => {
    // 這里出現(xiàn)錯誤可能是網(wǎng)絡(luò)波動造成的,清空 pendingRequests 對象
    pendingRequests.clear();
    return Promise.reject(error);
  }
);
  1. 在請求返回后維護 pendingRequests 對象

如果請求順利走到了響應(yīng)攔截器這一步,說明這個請求已經(jīng)結(jié)束了 pending 狀態(tài),那我們要把它從 pendingRequests 中除名:

axios.interceptors.response.use((response) => {
  const requestKey = response.config.requestKey;
  pendingRequests.delete(requestKey);
  return Promise.resolve(response);
}, (error) => {
  if (axios.isCancel(error)) {
    console.warn(error);
    return Promise.reject(error);
  }
  pendingRequests.clear();
  return Promise.reject(error);
})
  1. 需要清空 pendingRequests 對象的場景

遇到網(wǎng)絡(luò)波動或者超時等情況造成請求錯誤時,需要清空原來存儲的所有 pending 狀態(tài)的請求記錄,在上面演示的代碼已經(jīng)作了注釋說明。

此外,頁面切換時也需要清空之前緩存的 pendingRequests 對象,可以利用 Vue RouterbeforeEach 鉤子:

router.beforeEach((to, from, next) => {
  request.clearRequestList();
  next();
});

功能擴展

  1. 統(tǒng)一處理接口報錯提示

與后端約定好接口返回數(shù)據(jù)的格式,對接口報錯的情況,可以統(tǒng)一在響應(yīng)攔截器中添加 toast 給用戶提示,

對于特殊的不需要報錯的接口,可以設(shè)置一個參數(shù)存入 axios 攔截器的 config 參數(shù)中,過濾掉報錯提示:

// 接口返回 retcode 不為 0 時需要報錯,請求設(shè)置了 noError 為 true 則這個接口不報錯 
if (
  response.data.retcode &&
  !response.config.noError
) {
  if (response.data.message) {
    Vue.prototype.$message({
      showClose: true,
      message: response.data.message,
      type'error',
    });
  }
  return Promise.reject(response.data);
}
  1. 發(fā)送請求時給控件添加 loading 效果

上面利用 axios interceptors 過濾重復請求時,可以在控制臺拋出信息給開發(fā)者提示,在這個基礎(chǔ)上如果能給頁面上操作的控件添加 loading 效果就會對用戶更友好。

常見的 ui 組件庫都有提供 loading 服務(wù),可以指定頁面上需要添加 loading 效果的控件。下面是以 element UI 為例的示例代碼:

// 給 loadingTarget 對應(yīng)的控件添加 loading 效果,儲存 loadingService 實例
addLoading(config) {
  if (!document.querySelector(config.loadingTarget)) return;
  config.loadingService = Loading.service({
    target: config.loadingTarget,
  });
}

// 調(diào)用 loadingService 實例的 close 方法關(guān)閉對應(yīng)元素的 loading 效果
closeLoading(config) {
  config.loadingService && config.loadingService.close();
}

與上面過濾報錯方式類似,發(fā)請求的時候?qū)⒃氐?class name 或 id 存入 axios 攔截器的 config 參數(shù)中,

在請求攔截器中調(diào)用 addLoading 方法, 響應(yīng)攔截器中調(diào)用 closeLoading 方法,就可以實現(xiàn)在請求 pending 過程中指定控件(如 button) loading,請求結(jié)束后控件自動取消 loading 效果。

  1. 支持多個攔截器組合使用

簡單看下 axios interceptors 部分實現(xiàn)源碼可以理解,它支持定義多個 interceptors,所以只要我們定義的 interceptors 符合   Promise.then 鏈式調(diào)用的規(guī)范,還可以添加更多功能:

this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
  chain.unshift(interceptor.fulfilled, interceptor.rejected);
});

this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
  chain.push(interceptor.fulfilled, interceptor.rejected);
});

while (chain.length) {
  promise = promise.then(chain.shift(), chain.shift());
}

總結(jié)

并發(fā)問題很常見,處理起來又相對繁瑣,前端解決并發(fā)沖突時,可以利用 axios 攔截器統(tǒng)一處理重復請求,簡化業(yè)務(wù)代碼。

同時 axios 攔截器支持更多應(yīng)用,本文提供了部分常用擴展功能的實現(xiàn),感興趣的同學可以繼續(xù)挖掘補充攔截器的其他用法。

今天的內(nèi)容就這么多,希望對你有幫助。

Node 社群

     
     


我組建了一個氛圍特別好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你對Node.js學習感興趣的話(后續(xù)有計劃也可以),我們可以一起進行Node.js相關(guān)的交流、學習、共建。下方加 考拉 好友回復「Node」即可。

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

瀏覽 1019
點贊
評論
收藏
分享

手機掃一掃分享

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

手機掃一掃分享

分享
舉報

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 国产精品视频你懂的| HEYZO少婦AV無碼精品| 玖热精品| 操女人逼AV| 亚洲一级Av无码毛片久久精品| 少妇高潮喷水| 777三级| 久久精品无码一区二区无码性色| 久久夜色视频网| 高hnp| 国产黄色视频免费| 成人丁香| 国产av在| 国产有码在线观看| 亚洲欧美日韩性爱| 久久一级片| 久久午夜无码鲁丝片午夜精| 国产女人18毛片水18精| 免费操B| 中文字幕日韩美| 欧美性之站| 操逼视频在线观看| 国产无遮挡又黄又爽免费网站| 日韩色综合| 无码一区二区久久| 国产亚洲成人综合| 91丨熟女丨露脸| 亚洲都市激情| 操逼视频在线观看| 日本成人视频| 国产精品女| 日韩V| AV婷婷五月天| 国产成人视频免费在线观看| 青青操青青干| 蜜桃视频成人版网站| 成人国产欧美日韩在线视频 | 超碰牛牛| 欧美日韩网| 囯产一级黄片| 色欲成人AV| 男人天堂手机视频| 国产a级毛片| 成人欧美| 五月天狠狠干| 91麻豆精品国产| 中日韩特黄A片免费视频| 天天日天天色天天干| 亚洲成av| 操逼操逼操| 在线成人小视频| 日韩欧美亚洲| 97人妻精品| 人人妻人人澡人人爽人人欧美一区| 中文字幕人成人乱码亚洲电影| 大香蕉男人天堂| 黑人精品| 自慰影院| 荫蒂添到高潮免费视频| 国产精品美女久久久久久久久| 蝌蚪窝免费在线视频| 免费无码A片在线观看全| 高清一区二区| 人妻无码中文字幕免费视频蜜桃 | youjizzcom日本| 亚洲色图偷拍| 18XXX亚洲HD护士JD| 黄网在线免费观看| 日本特级片| 操逼视频观看| 青青青草视频在线观看| 国产一区二区三区在线观看免费视频免费视频免费视频 | 99久久精品国产成人一区二区 | 亚洲AV永久无码成人| 精品成人AV| 国产又爽又黄免费观看| 午夜激情国产| 一区二区免费在线观看| 婷婷V亚洲V丁香月天V日韩V| 国产a毛一级,a毛一级| 操比免费视频| 久久日韩视频| 久久免费成人| 黄色一级在线| 人人操人人操人人操人人操人人操| 亚欧av无码| 91超碰在线| 亚洲黄色AV| 91精品久久久久久| 最好看的MV中文字幕国语电影| 手机免费AV| 亚洲h| 日韩AV免费看| 香蕉伊人| 在线观看黄片视频| 大香蕉精品视频| 免费一级做a爱片毛片A片小说| 男女啪啪动态图| 最新国产在线| 麻豆午夜成人无码电影| 亚洲AV秘无码苍井空| 国产美女av| 夜夜撸网站| 伊人国产女| 深夜福利网| 丁香五月六月| 日韩一级无码特黄AAA片| 中文无码播放| 国产又大又粗| 黄色三级毛片| 国产精品a片| 久久久无码精品亚洲| 老鸭窝在线观看视频| 香蕉视频在线看| AV在线免费观看网站| 少妇嫩搡BBBB搡BBBB| av无码观看| 在线观看亚洲天堂| 日韩黄色网址| 人人操人人操人人| 亚洲aaa| 少妇无码| 日韩av中文在线| 日韩欧美在线中文| 久久人人做| 一级黄色影院| 午夜理论在线| 九九九九九九精品视频| 九色91PORNY国产| 色老板网址| 成人免费网站在线| 国产一区二区免费| 人人澡人人爽| 五月天欧美性爱| 午夜丁香| 狠狠操综合网| 色77777| 人人摸人人干| 天天爽爽爽爽爽成人片| 欧美高清久久| 二级黄色毛片| 色逼逼网| 理论片无码| 欧美中文字幕在线播放| 亚洲欧美国产日韩字幕| 欧美性爱无码| 国产一级无码| 18禁黄网站| 女色综合| www.伊人大香蕉| 黄色视频免费| 亚洲一区二区久久| 国产亲子乱XXXXimim/| 老熟女导航| 日韩小黄片| 国产精品国产精品国产专区不卡 | 蜜桃Av噜噜一区二区三区四区| 激情操逼视频| 日本大香蕉伊人| 亚洲电影中文字幕| 亚洲91精品| 在线视频中文字幕| 欧美午夜精品一区二区蜜桃| 苍井空在线播放| 亚洲一在线| 无码国产精品一区二区视频| 五月天久久精品| 国产精品久久久精品cos| 91欧美视频| 无码人妻精品一区二区蜜桃91| 视频三区| 亚洲中文无码视频| 久操视频一区二区三区| 精品逼| 国产最新AV| 特一级黄片| 欧美aaa视频| 色丁香五月婷婷| 亚洲一区中文字幕| 国产高清秘成人久久| 色五月婷婷丁香五月| 亚洲人妖在线| 污视频网站在线观看| 国产乱子伦-区二区三区四区| 激情五月天影院| 国产精品成人无码免费| 國產美女AV操逼網站| 亚洲无码免费视频在线观看| 中国操逼毛片| 五月婷婷色色色| 777无码| 久草综合视频| 狼友视频在在观看| 亚洲色成人网站www永久四虎| 成人精品一区二区无码| 内射视频在线免费观看| 日韩黄频| 欧美激情一区二区| 亚洲无吗在线视频| 国产小福利| 国产日韩一区二区三区| 亚洲AV无码成人精品区| 欧美日皮视频| 亚洲激情偷拍| 91久久久久久久18| 亚洲国产成人91PORN| 91丨人妻丨偷拍| 大香蕉婷婷| 99资源站| 午夜福利澳| 任我操在线视频| 18禁一区二区三区| 欧美成人视频大全| 天天拍天天日| 日韩欧美成人在线观看| 五月香婷婷| 水蜜桃视频网站| 午夜福利电影无码| 欧美性猛交ⅩXXX无码视频| 亚洲成色A片77777在线小说| 日本操逼网站| 亚洲欧洲综合| 日韩黄色一级视频| 加勒比DVD手机在线播放观看视频| 国产精品免费人成网站酒店| 日韩图色| 777Av| 日韩激情无码| 亚洲AV无码精品岛国| 在线播放国产精品| 成人看片黄a免费看视频| 天天无码| 国产午夜福利视频在线观看| 欧美A黄片| 五月香婷婷| 日韩一级无码| 成人动漫免费观看| 亚洲一区二区三区在线视频| 人人妻人人爽人人精品| 中文字幕av高清片,中文在线观看| 一区二区三区国产精品| 国产一a毛一a免费观看| 国产久久久久久久| 青青草无码在线视频| 久久久久久久久久久久高清毛片一级 | 亚洲国产精品VA在线看黑人| 久草精品视频| 亚洲成人免费| 澳门午夜黄色在线| 草逼视频免费看| 色婷婷色99国产综合精品| 高清无码一区| 亚洲视频观看| 性爱视频免费| 大香蕉久草| 内射学生妹J亅| 日韩A片在线| 亚洲成人视屏| 综合站欧美精品| 色色五月丁香| 嫩BBB槡BBBB槡BBBB撒尿| 91成人在线观看学生和老师| 91精品91久久久中77777| 精品人伦一区二区三区| 国产精品v| 成人在线伊人| 婷婷午夜精品久久久久久| 国产免费一区二区| 91免费观看国产| 色五月激情小说| 久久这里都是精品| 久久久久久久久久久久久自慰小片| 亚洲国产成人视频| 日韩小视频在线| 亚洲777| 一本道精品在线| 亚洲秘无码一区二区三区蜜桃中文| 青青草视频在线观看| 免费观看成人毛片A片直播千姿| 免费无码又爽又黄又刺激网站 | 懂色av,蜜臀AV粉嫩av| 日韩黄色免费视频| 精品美女视频| jizz在线免费观看| 国产,亚洲91| 波多野结衣高清视频| a免费视频| 搞搞电影91| 亚洲中文字幕2019| 黄色成人网站在线免费观看| 成人香蕉| 国产精品一区二区不卡| 成人国产精品秘久久久网站| 香蕉福利网| 国产精品久久久久久久久夜色| 蕉久中文字慕| 午夜三级无码| 亚洲精品中文字幕无码| 国产高清精品无码| 91毛片在线观看| 嫩BBB槡BBBB槡BBB| 日韩一区二区三区四区久久久精品有吗 | 久久AV网站| 人人操人人插| 嫩草视频在线播放| 国产精品操| 九九精品12| 中文字幕牛牛婷婷| 国产白丝在线| 久久久久久亚洲AV黄床| 拍真实国产伦偷精品| 欧美日韩免费在线播放电影在线播放电影在线播放电影免费 | 无码人妻一区二区三区| 特级西西444www| 人妻天天干| 淫荡五月天视频导航| 爆操欧美| 色婷婷丁香五月天| 女人BBBB| 伊人久久av| 久久人妻视频| 一区久久| 996热| 中文字幕第72页| 五月婷婷在线视频| 日少妇视频| 99免费观看视频| 在线观看国产欧美| 狠狠插狠狠操| 熟女视频国产| 婷久久久| 久久h| 天堂8在线视频| 久久久久久成人电影| 天天日穴| 国产精品成人99一区无码| 91人妻一区二区| 五月丁香激情综合| 亚州无码| 91人人人人| 精品蜜桃一区二区三区| 91国产精品在线| 国产精品扒开腿做爽爽爽A片唱戏| 中文字幕在线播放av| 亚洲第一免费视频| 中文字幕日韩欧美在线| 一区二区三区色| 龙泽美曦土豪| 国产黄色视频在线免费看| 色色一区| 啪啪啪免费视频| 亚洲成人在线视频| 91亚洲精品视频在线| 中日韩欧美一级A片免费| 黄色片久久| 亚洲午夜视频在线观看| 色色色色AV| AA片免费网站| 人人摸人人操人人爱| 五月在线| 一大高清日韩| 成人爽a毛片一区二区免费| 麻豆911精一区二区| www.99视频| 级婬片AAAAAAA免费| 懂色av粉嫩av蜜臀av| 宅男看片| 四虎精品一区二区| 久久色在线视频| 精品一区二区三区四区视频| 日本绿色精品视频| 西西西444www无码视| 日本黄色大全| 91成人小电影| 人人操97| 亚洲第一av| 日韩精品中文字幕在线观看| 91口爆| 国产av小电影| 老女人的逼| 超碰福利导航| 97中文字幕| 综合网插菊花| 国产亚洲视频完整在线观看| wwwsesese| 国外成人在线视频老鸭窝| 久久污| 麻豆国产成人AV一区二区三区| 四lll少妇BBBB槡BBBB| 大香蕉伊人网在线| 中文字幕人妻互换av久久| 天天草B| 亚洲精品视频在线播放| 久久久久亚洲精品| 免费观看无码视频| 中文字幕在线一区二区a| 高清无码视频在线观看| 国产一级麻豆| 亚日韩视频| 国产又爽又黄免费网站在线看| 欧美久色| 亚洲专区视频| 91人妻中文字幕| 一区二区三区免费观看| 中文字幕av在线播放| 久久久久一区二区三区| 久久免费观看视频| 久久精品秘一区二区三免费| 日韩美女毛片| 国产91在线亚洲| 亚洲操逼AV| 91精品国产aⅴ一区二区| 福利大香蕉| 俺去夜| 美女福利视频| 欧美成人精品A片免费一区99| 暗呦网一区二区三区| 色福利视频| 成人性视频Aⅴ| 亚洲av资源| 熟女在线视频| 日本在线www| 日本三级网| 亚洲天堂av网| 120分钟婬片免费看| 国产777777| 日韩精品一二区| 亚洲人成77777| 波多野结衣黄色视频| 91人妻人人爽人人澡人人爽| 爽爽午国产浪潮AV性色www| 精品人妻中文字幕| 中文字幕无码人妻在线视频| 性性性性性XXXXX| 爱爱网址| 国产在线拍偷自揄拍无码一区二区 | 超碰在线免费| 国产精品视频福利| 人人操人人模| 国产乱伦片、| 米奇色色| 国产成人无码精品久在线观看| 91三级片在线播放| 亚洲无码中文字幕在线观看| 人人摸人人色| 色欧美视频| 欧美69| 婷婷五月天激情小说| 国产女人18毛片水18精品| 无码九九九| 免费毛片网站| 国产成人综合视频| 天天天天操| 在线天堂9| 丁香五月在线视频| 熟睡侵犯の奶水授乳在线| 少妇人妻一区二区三区| 日本性爱中文字幕| 在线视频日韩| 久久99国产乱子伦...| 日韩av无码中文字幕| 久久无码电影| 亚洲AV动漫| 欧美日韩小电影| 成人性生交片无码免费看人| 国产欧美日韩| 91九色视频| 嫩草91| 簧片网站免费| 中文字幕激情精品| 国产精品国产| 日韩中文字幕免费在线观看 | 婷婷视频导航| 大香蕉尹人| 国产精品视频久久久| 91AV一区二区| 超碰碰碰| 老司机永久免费91| 伊人久艹| 久久久91精品国产一区苍井空| 美女性爱视频网站| 美女操网站| 操逼视频大全| igao视频| 亚洲熟女av中文字幕| 九九热99视频| 欧美大香蕉伊人网| 亚洲综合小说| A视频在线免费观看| 无码动漫av| 亚洲天堂在线免费观看视频 | 北条麻妃中文字幕旡码| 一区二区三区视屏| 国产成人秘免费观看一区二区三区 | 四虎综合网| 国产潮吹| 欧美天天干| 99热偷拍| 亚洲秘一区二区三区-精品亚洲二区- | 狠狠地操| 婷婷午夜精品久久久久久性色AV | 黄色片网站免费观看| 91精品少妇高潮一区二区三区不卡| 伊人在综合| 婷婷一区二区| 五月天狠狠干| 免费无码又爽又黄又刺激网站 | 性色A| 囯产伦精一区二区三区四区| 国产欧美日韩| 欧美精品在线播放| 国产女人18毛片水18精| 国产黄色视频免费在线观看| 一级a一级a爰片免费免免中国A片 一级一级a免一级a做免费线看内裤 | 水果派av| 亚洲AV免费看| 九九九在线视频| 100国产精品人妻无码| 狠狠操夜夜操| 五月天av在线观看| 亚洲性爱在线观看| 欧美成人版| 精品乱伦视频| 成人午夜无码| 综合色五月| 天天操天天干麻豆| 无码视频免费观看| 欧美精品秘一区二区三区蜜臀 | 国产精品欧美一区二区三区苍井空| 日本电影一区二区三区| 狠狠91| 亚洲欧美婷婷五月色综合| 久久久国产探花视频| av在线精品| 中文字幕精品在线观看| 91福利院| www香蕉成人片com| 日本在线精品视频| 88AV在线视频| 国产成人777777精品综合| 午夜成人国产| 日韩乱伦毛片| 无码高清在线| 天天爽夜夜爽夜夜爽| 在线观看毛片网站| 亚洲高清无码在线观看| 国产日韩精品无码去免费专区国产| 成人做爰100部免费网站| 性无码一区二区三区在线观看| 青青草原在线视频免费观看| 久草香蕉| 人妻少妇中文字幕久久牛牛| 日韩一级视频| 久久无码一区二区| 欧美日韩黄色极品| 日本不卡在线观看| 黑人粗暴偷拍一区二区| 中文无码av| 午夜福利毛片| 亚洲永久视频| 影音先锋AV在线资源| 欧洲美一区二区三区亚洲| 日韩精品无码AV| 二级黄色毛片| 99伊人在线| 婷婷国产成人精品| 色欲影视插综合一区二区三区| 三级片在线视频| 亚洲无码精品在线| 北条麻妃在线观看| 91成人无码视频| 超碰在线精品| 人妻无码久久精品| 国产aaaaaaaaaa| 十八无码成人免费网站| 日本一区二区精品| 自拍一区在线观看| 精品久久免费| 国产激情都市一区二区三区欧美| 精品无码一区二区三区四区| 国产粉嫩| 91久久综合亚洲鲁鲁五月天| 3344gc在线观看入口| 日韩AV免费电影| 69er小视频| 超碰婷婷| 亚洲永久免费精品| 亚欧一区二区| 俄罗斯老熟妇与子伦| AⅤ天堂| 无码中文字| 日韩一级在线视频| 男女啪啪啪| 日本一本视频| 中文字幕视频一区| 成人性爱福利视频| 色婷婷艹| 国产黄色电影在线观看| 夜夜操夜夜操| 日本人妻中文字幕| 日韩A片在线观看| 最新超碰| 大香蕉久久爱| 熟妇在线观看| 久久xx| 欧美一区视频| 亚洲日韩av在线| 一二区视频| 2025天天干| 18禁一区| 日韩无码www| 久久黄视频| 伊人国产女| 日韩a级毛片| 91麻豆香蕉| 微熟女地址导航| 韩国三级HD久久精品HD| 日韩精品免费无码视频| 午夜69成人做爱视频网站| 一级无码在线观看| 韩国三级HD中文字幕的背景音乐| 日韩AV无码成人精品| 国产成人无码一区二区在线观看| 亚洲精品观看| 99免费在线视频| 国产av在| 日韩精品无码电影| 精品美女视频| 国产在线一| 欧美啪啪网站| 色五月激情网| 久操婷婷| 在线观看免费黄色| 国产无遮挡又黄又爽又色| 囯产精品久久久久久久久免费无码 | 亚洲黄色av| 婷婷色综合视频二区| ⅴA日本成人| 人人操在线公开| 国产一区二区00000视频| 天天躁狠狠躁av| 69成人精品视频| 国产精品无码毛片| 嫖中国站街老熟女HD| 国产精品扒开腿| 久久精品无码一区二区无码性色 | 竹菊av一区二区三区四区五区| 日本成人免费| 屁屁影院CCYYCOM发布地| 手机AV在线观看| 91九色蝌蚪91POR成人| 人妻av中文无码| 国产黄色视频免费看| 内射| 亚洲中文字幕观看| 欧美亚洲日韩一区二区三区| 国产精品在线观看视频| 18禁网站免费| 亭亭五月丁香| 51成人网| 五月天堂网| 少妇一区二区三区| 无码视频在线播放| 91麻豆福利在线观看| 无码乱伦AV| 免费观看日韩无码视频| 欧美性受XXXX黑人XYX性爽一| 成人黃色A片免费看| 97久久综合| 国产乱子伦无码视频免费| 中文在线无码| 亚洲另类天堂| 激情国产视频| 精品一区二区三区免费毛片| 91丨人妻丨偷拍| av天天干| 91成人视频| 一级国产黄色视频| 久久成人18免费网站波多野结衣| 人人av在线| 欧美+日韩+国产+成人+在线| 新BBWBBWBBWBBW| 欧美日韩中文字幕在线视频| 翔田千里AV| 成人免看一级a一片A片| 伊人久久电影| 丁香色婷婷| 免费在线观看AV| 国产精品色情A级片| 成人蜜臀AV| 国产在线欧美| 中文字幕免费无码| 人人看人人摸人人草| 国产三级小视频| 免费看黄片的网站| 日本黄色免费看| 精品操逼| 蜜臀AⅤ在线| 豆花无码视频一区二区| 国产一精品一aⅴ一免费| 91爱搞在线| 在线免费观看网站| 久热福利| 男人天堂无码| 欧美性爱中文字幕| 欧美成人精品| 很色很黄的A片一| 中文字幕在线无码观看| 国产视频a| 亚洲视频在线免费看| 操久| 午夜av影院| 伊人乱伦| 性爱一级视频| 欧美色图视频在线观看| 99精品视频网站| 爱搞国产| 日韩成人无码人妻| 精品国产99| 天天澡天天爽日日AV| 无码人妻精品一区二区50| www.91在线视频| 色色激情五月天| 亚洲无码一二三| 97一区二区三区| 日韩三级片网站| 中文字幕午夜福利| 韩国无码AV| 大香蕉综合在线观看| 污污污污污www网站免费观看| 亚洲五月天在线| 亚洲黄色无码| 亚洲免费观看| 天堂在线观看AV| 亚洲成人资源| 插插插菊花综合网| 亚洲无码精品在线观看| 日韩黄色三级片| 国产成人AV免费观看| 俺去骚| 亲子伦一区二区三区观看方式| 日韩AV无码专区亚洲AV| 一级日逼片| 爱搞搞就要搞| 欧美成人性爱网址| 亚洲成av| 午夜AV福利| 色天天综合网| 91无码精品| 成人操B视频在线观看| 成人中文字幕在线视频| 午夜视频免费| 亚洲人妻无码视频| 亚洲色综合| 欧美成人视频大全| 久热中文在线观看精品视频| 欧美日韩色情| 久久草大香蕉| 麻豆av在线| 日韩无码人妻一区二区三区| 国产成人三级片在线观看| 人人操人人摸人人爽| 91国产视频在线观看| 色婷婷综合久久久中文字幕| 欧美国产在线观看综合| 成人才看的在线视频| 亚洲色青| 五月天婷婷av| 91在线精品秘一区二区黄瓜| 麻豆黄片| 三级在线网| 蜜桃久久久亚洲精品| 欧美综合激情| 欧美一二三区黄色免费视屏| 欧美色精品| 北京熟妇搡BBBB搡BBBB | 日逼片| 先锋av资源在线| 久久9久| 黄骗免费网站| 人人摸人人搞| 欧美性生活视频| www久久99| 日韩a视频| 成人视频在线免费观看| 久碰人妻人妻人妻| 91精品无码一区二区| 国产精品人妻AⅤ在线看| 一区二区三区在线看| 美国熟妇| 怡红院成人av| 超碰人人草| 国内操B电影| 91欧美精品成人AAA片| 日本中文字幕网站| 免费日韩| 久久青留社区金玉| 翔田千里无码免费播放| 欧美在线视频播放| 免费性爱视频网站| 狠狠躁日日躁夜夜躁A片视频| 影音先锋AV资源在线| 国内自拍av| 91成人影片| 久久午夜成人电影| 无码人妻精品一区二区蜜桃漫画 | 国产精品五月天| 成人片网址| 亚洲国产精品成人网站| 国产三级精品三级在线观看| 日本爽妇网| 婷婷五月天在线观看| 黄色三极片| 91在线一区二区三区| 国产免费成人视频| 逼逼爱插插网站| 亚洲三级无码在线| 91丨国产丨熟女熟女| 91日韩在线| 少妇人妻一级A毛片| 日韩亚洲欧美在线| 日本黄色电影网址| 水蜜桃成人在线| 日韩精品视频一区二区三区| 亚洲高清无码一区| 国产一级a毛一级a做免费的视频l 精品国产免费观看久久久_久久天天 | 亚洲av免费| 97爱爱视频| 97国产精品人人爽人人做| 免费视频a| 人人澡人人爽欧一区| 在线观看亚洲天堂| 一区二区AV| 免费看黄片视频| 狠狠欧美| 中文无码熟妇人妻AV在线| 一級免費网站| 神马午夜视频| 午夜av影院| 蜜臀久久99精品久久一区二区| 亚洲无码专区视频| 亚洲精品在线观看视频| 五月天婷婷AV| 大炕上公让我高潮了六次| 91人妻精| 人妻少妇中文字幕久久牛牛| 黄色一级片免费观看| 天天爽天天爽| 国产乱码精品一区二区三区的特点 | 91香蕉视频| 污视频网站免费观看| 一级欧美一级日韩片| ⅴA日本成人| 伊人成人片| 超碰在线大香蕉| 翔田千里无码在线观看| 日韩无码视屏| 国产青青| 中文av网站| 69福利视频| 国产激情自拍| 狠狠做深爱婷婷久久综合一区 | av午夜福利| 欧美footjob高跟脚交| 美女超碰| 人人操免费| 国产乱伦精品视频| 成人视频你懂的| 69av在线播放| 一级婬片A片AAAAA毛片| www尤物| 欧美成人精品| 九九九九综合| 国产美女自拍视频| 色欲成人AV| 国产伦子伦一级A片在线| 男女av| 十八无码成人免费网站| 俺去俺来也www色官网cms| 夜夜看| 亚洲社区在线观看| 日韩免费一级片| 国产女人水真多18毛片18精品 | 三级片韩国AV| 一本色道久久无码人妻精品69| 少妇熟女网| 日本欧美成人片AAAA| 在线中文字幕AV| 国产在线观看免费成人视频| 国产人妻一区二区精选| 久操视频网| 日韩无码一卡| 熟女嗷嗷叫高潮合集91| 色呦呦一欧美| 色综合999| 西西888WWW大胆无码| 99精品亚洲| 亚洲视频免费在线| 日本四级片| 无码一区二区久久|