精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何取消無用的HTTP請求

開發 前端
取消HTTP請求是一個很實用的功能,正確使用可以顯著提升應用性能和用戶體驗。希望這些示例能幫助你在實際項目中更好地應用這個功能。

在開發前端應用時,我們經常會遇到需要取消HTTP請求的情況。比如文件上傳過程中用戶想取消上傳,或者搜索框在用戶連續輸入時取消之前的搜索請求。取消無用的請求既能節省服務器資源,又能提升用戶體驗。

為什么要取消請求?

想象這樣一個場景:用戶上傳一個大文件,上傳到一半時發現選錯了文件。如果不取消當前的上傳請求,用戶要么等待上傳完成(浪費時間),要么關閉頁面(體驗不好)。最好的做法是立即取消當前請求,讓用戶重新選擇文件。

下面介紹幾種常用的取消請求方法。

1. 原生AJAX的abort方法

XMLHttpRequest提供了abort()方法來取消請求:

// 創建XMLHttpRequest對象
const xhr = new XMLHttpRequest();
const url = "https://api.example.com/data";

// 初始化請求
xhr.open('GET', url);

// 監聽取消事件
xhr.addEventListener('abort', function() {
console.log('請求已被取消');
});

// 發送請求
xhr.send();

// 在需要的時候取消請求
setTimeout(() => {
  xhr.abort(); // 取消請求
console.log('取消后的狀態碼:', xhr.status); // 變為0
}, 100);

當調用abort()后,請求會立即停止,status狀態碼會變成0。

2. Fetch API使用AbortController

Fetch API需要使用AbortController來取消請求:

// 創建AbortController實例
const controller = new AbortController();
const signal = controller.signal;

// 發起請求
fetch('https://api.example.com/submit', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
  },
body: JSON.stringify({ name: '張三', age: 25 }),
signal: signal // 關聯信號量
})
.then(response => {
if (!response.ok) thrownewError('請求失敗');
return response.json();
})
.then(data => {
console.log('提交成功:', data);
})
.catch(error => {
if (error.name === 'AbortError') {
console.log('請求已被取消');
  } else {
console.error('請求錯誤:', error);
  }
});

// 取消請求
setTimeout(() => {
  controller.abort();
}, 1000);

重要提示:一個AbortController只能使用一次。取消請求后,如果需要發起新的可取消請求,需要創建新的AbortController實例。

3. Axios使用AbortController(推薦)

Axios從0.22.0版本開始推薦使用AbortController:

// 創建控制器
const controller = new AbortController();

// 方法一:監聽取消事件
controller.signal.addEventListener("abort", () => {
console.log("請求已取消");
});

// 方法二:使用try-catch
asyncfunctionuploadFile() {
try {
const response = await axios.post('/api/upload', formData, {
signal: controller.signal
    });
console.log('上傳成功', response.data);
  } catch (error) {
if (error.message === "canceled") {
console.log("請求已被取消");
    } else {
console.error("上傳錯誤:", error);
    }
  }
}

// 取消請求
controller.abort();

4. Axios的CancelToken(舊版本)

0.22.0之前的Axios使用CancelToken,現在已不推薦使用:

import axios from"axios";

// 創建取消令牌
const source = axios.CancelToken.source();

try {
const response = await axios.post('/api/upload', formData, {
cancelToken: source.token
  });
} catch (error) {
if (axios.isCancel(error)) {
console.log('請求已取消:', error.message);
  }
}

// 取消請求
source.cancel('用戶取消了操作');

實際應用場景

場景1:搜索框防抖

let controller = null;

asyncfunctionhandleSearch(keyword) {
// 取消之前的請求
if (controller) {
    controller.abort();
  }

// 創建新的控制器
  controller = new AbortController();

try {
const response = await fetch(`/api/search?q=${keyword}`, {
signal: controller.signal
    });
const results = await response.json();
    displayResults(results);
  } catch (error) {
if (error.name !== 'AbortError') {
console.error('搜索錯誤:', error);
    }
  }
}

// 防抖處理
const debouncedSearch = debounce(handleSearch, 300);
searchInput.addEventListener('input', (e) => {
  debouncedSearch(e.target.value);
});

場景2:文件上傳取消

classFileUploader{
constructor() {
this.controller = null;
  }

  async upload(file) {
// 取消正在進行的上傳
if (this.controller) {
this.controller.abort();
    }

this.controller = new AbortController();
const formData = new FormData();
    formData.append('file', file);

try {
const response = await axios.post('/api/upload', formData, {
        signal: this.controller.signal,
        onUploadProgress: (progressEvent) => {
const percent = Math.round(
            (progressEvent.loaded * 100) / progressEvent.total
          );
          updateProgress(percent);
        }
      });
return response.data;
    } catch (error) {
if (error.message !== 'canceled') {
throw error;
      }
    }
  }

  cancel() {
if (this.controller) {
this.controller.abort();
    }
  }
}

場景3:頁面切換取消請求

classPageRequestManager{
constructor() {
this.controllers = new Map();
  }

  addRequest(requestId, controller) {
this.controllers.set(requestId, controller);
  }

  cancelRequest(requestId) {
const controller = this.controllers.get(requestId);
if (controller) {
      controller.abort();
this.controllers.delete(requestId);
    }
  }

  cancelAll() {
for (const controller of this.controllers.values()) {
      controller.abort();
    }
this.controllers.clear();
  }
}

// 在vue組件中使用
export default {
data() {
return {
      requestManager: new PageRequestManager()
    };
  },

  beforeUnmount() {
// 組件銷毀時取消所有請求
this.requestManager.cancelAll();
  },

  methods: {
    async loadData() {
const controller = new AbortController();
const requestId = 'user-data';

this.requestManager.addRequest(requestId, controller);

try {
const response = await axios.get('/api/user', {
          signal: controller.signal
        });
this.userData = response.data;
      } catch (error) {
if (error.message !== 'canceled') {
this.handleError(error);
        }
      } finally {
this.requestManager.cancelRequest(requestId);
      }
    }
  }
};


注意事項

  1. 錯誤處理:取消請求會觸發錯誤,需要正確區分是取消錯誤還是其他錯誤。
  2. 狀態清理:取消請求后要及時清理相關狀態,比如上傳進度、加載狀態等。
  3. 用戶體驗:給用戶明確的反饋,比如顯示"已取消"的提示。
  4. 內存管理:及時移除事件監聽器,避免內存泄漏。

最佳實踐

  • 統一管理所有可取消的請求
  • 在組件銷毀時自動取消相關請求
  • 為用戶提供明確的取消反饋
  • 在合適的場景使用取消功能,不要過度使用

取消HTTP請求是一個很實用的功能,正確使用可以顯著提升應用性能和用戶體驗。希望這些示例能幫助你在實際項目中更好地應用這個功能。

責任編輯:龐桂玉 來源: web前端開發
相關推薦

2021-04-06 06:01:11

AxiosWeb 項目開發

2021-07-27 14:50:15

axiosHTTP前端

2025-02-06 08:09:20

POSTGET數據

2023-09-19 22:41:30

控制器HTTP

2024-08-27 08:55:32

Axios底層網絡

2024-08-12 12:32:53

Axios機制網絡

2018-10-18 10:05:43

HTTP網絡協議TCP

2025-02-04 09:58:08

2018-07-24 13:01:52

前端優化前端性能瀏覽器

2024-04-15 16:11:33

C#HTTP請求.NET

2021-08-26 06:58:14

Http請求url

2021-01-18 05:13:04

TomcatHttp

2024-09-30 08:43:33

HttpgolangTimeout

2025-05-27 05:00:00

fetchAPI網絡

2010-06-29 13:24:26

HTTP協議

2019-01-27 14:37:47

數據HTTP服務

2022-03-30 08:21:57

合并HTTP

2022-07-12 17:03:43

鴻蒙網絡請求庫

2021-10-28 09:36:12

高并發數據實踐

2023-06-28 11:36:41

點贊
收藏

51CTO技術棧公眾號

国产精品黄色av| 精品剧情v国产在线观看在线| 欧美亚洲一级二级| 中文字幕永久在线观看| 仙踪林久久久久久久999| 欧美一级片免费看| 久久精品免费一区二区| 求av网址在线观看| 99视频精品全部免费在线| 国产精品av电影| 精品99久久久久成人网站免费| 无码日韩精品一区二区免费| 欧美日韩精品系列| 亚洲理论电影在线观看| 国产乱子伦三级在线播放 | 777精品久无码人妻蜜桃| 国产精品免费播放| 国产成人综合网站| 国产精品h片在线播放| 久久久久97国产| 欧美第一精品| 亚洲精品视频在线播放| 免费不卡av网站| 免费观看成人性生生活片| 亚洲精品ww久久久久久p站| 日韩欧美一二区| 婷婷无套内射影院| 秋霞影院午夜丰满少妇在线视频| 99久久精品99国产精品| 亚洲在线视频福利| 正在播放木下凛凛xv99| 99精品国产99久久久久久福利| 日韩中文字幕视频| av中文字幕免费观看| 97se亚洲国产一区二区三区| 欧美精品一卡二卡| 黑鬼大战白妞高潮喷白浆| av日韩中文| 亚洲黄色小说网站| 亚洲成年人专区| 国产在线视频网站| www精品美女久久久tv| 国产超碰91| 99久久精品国产成人一区二区| 日日摸夜夜添夜夜添国产精品| 97超碰色婷婷| www.国产高清| 在线综合亚洲| 97香蕉超级碰碰久久免费软件 | aaa黄色大片| 国产激情一区| 777午夜精品视频在线播放| 三年中国国语在线播放免费| 精精国产xxx在线视频app| 日韩一区日韩二区| 视频一区二区视频| 免费**毛片在线| 自拍av一区二区三区| 一区二区三区四区视频在线| 最新国产在线观看| 亚洲欧美一区二区视频| 91视频成人免费| 午夜小视频在线观看| 亚洲精品v日韩精品| 精品成在人线av无码免费看| h片在线观看| 亚洲成av人片在线观看无码| 97视频久久久| 在线观看爽视频| 欧美在线观看18| 污视频网站观看| 电影一区二区三区久久免费观看| 日韩一区二区免费视频| 久久久久无码国产精品一区李宗瑞| 国偷自产av一区二区三区| 亚洲国产91色在线| 91网站免费视频| 精品免费在线| 播播国产欧美激情| 久草视频在线免费看| 99精品国产福利在线观看免费| 欧美在线中文字幕| 中文字幕精品无码亚| 国产一区二区导航在线播放| 国产91视觉| 日韩av成人| 国产精品视频一区二区三区不卡| 亚洲精品偷拍视频| а√天堂8资源在线| 91精品福利在线| 国产精欧美一区二区三区白种人| 爱爱精品视频| 亚洲人高潮女人毛茸茸| 国产精品视频一区二区在线观看| 国内揄拍国内精品久久| 青青草99啪国产免费| 亚洲在线免费观看视频| 成人黄色在线看| 日韩免费电影一区二区三区| 成人日日夜夜| 色拍拍在线精品视频8848| 午夜不卡福利视频| 日韩av系列| 久久久999国产| 中文字幕激情小说| 国产一区中文字幕| 玛丽玛丽电影原版免费观看1977| 色哟哟免费在线观看| 精品国产精品自拍| 亚洲综合123| 加勒比久久综合| 久久久久久999| 一区二区日韩在线观看| 91美女在线观看| 日韩精品免费一区| 色猫猫成人app| 亚洲国产一区自拍| 九九热最新地址| 日韩avvvv在线播放| 国产日韩一区二区| 免费在线毛片网站| 在线亚洲免费视频| 久久福利小视频| 欧美三区美女| 成人美女免费网站视频| 国产原创av在线| 午夜欧美视频在线观看| 亚洲第一成肉网| 日本久久精品| 国产成人精品久久亚洲高清不卡| 黄色片网站免费在线观看| 亚洲视频资源在线| 精品日韩久久久| 免费成人av| 555www成人网| 天天舔天天干天天操| 一区二区三区精品视频在线| 911av视频| 国产精品精品国产一区二区| 国产精品无码专区在线观看| 九一在线视频| 欧美视频13p| 色综合久久五月| 亚洲激情成人| 国内精品国语自产拍在线观看| 日韩另类在线| 日韩欧美国产精品| 午夜69成人做爰视频| 国产精品伊人色| 最近中文字幕免费mv| 99久久久国产| 欧美成人网在线| 精品国产无码一区二区| 亚洲自拍偷拍九九九| wwwww在线观看| 欧美午夜一区| 精品国产综合区久久久久久| 久久青草伊人| 亚洲伦理中文字幕| 精品国产xxx| 欧美国产在线观看| 欧美精品久久久久久久久25p| 精品黄色一级片| 国产精品极品美女粉嫩高清在线| www.成人.com| 欧美一区二区三区婷婷月色| 青青青在线视频| 成人国产一区二区三区精品| 5月婷婷6月丁香| 教室别恋欧美无删减版| 国产精品欧美亚洲777777| 欧美猛烈性xbxbxbxb| 91精品国产综合久久蜜臀| 国模无码国产精品视频| 成+人+亚洲+综合天堂| 精品国产免费av| 热久久天天拍国产| 亚洲a成v人在线观看| а_天堂中文在线| 亚洲欧美自拍一区| 一区二区精品视频在线观看| 亚洲午夜成aⅴ人片| 国产精品探花一区二区在线观看| 美女视频一区二区三区| 免费cad大片在线观看| 欧美色图五月天| 国产精品美女www爽爽爽视频| 黄视频在线观看网站| 亚洲国产天堂久久国产91| 中文字幕观看视频| 亚洲成人自拍一区| 日本高清黄色片| 国产a久久麻豆| 欧美黄色一级片视频| 欧美一区二区三区另类| 久久综合伊人77777麻豆| 亚洲伊人精品酒店| 57pao国产成人免费| 麻豆影视国产在线观看| 日韩成人xxxx| 国产人妻精品一区二区三| 狠狠做深爱婷婷久久综合一区| 激情无码人妻又粗又大| 99视频国产精品| 国产探花在线观看视频| 欧美专区18| 老司机激情视频| 日韩免费在线| 美乳视频一区二区| 在这里有精品| 国产欧美va欧美va香蕉在线| 91福利在线免费| 久久精品视频播放| 国产主播福利在线| 精品国产免费久久| 91久久久久久久久久久久| 欧美日韩国产精品一区二区三区四区| 一区二区三区影视| 久久久久久久国产精品影院| 久久久午夜精品福利内容| 激情六月婷婷久久| a在线观看免费视频| 国产美女诱惑一区二区| 野外做受又硬又粗又大视频√| 小处雏高清一区二区三区| 日韩一区国产在线观看| 亚洲va久久| 久久精品第九区免费观看 | 天天操天天舔天天射| 93久久精品日日躁夜夜躁欧美| 无码国产精品一区二区高潮| 精品影院一区二区久久久| 中文字幕国产传媒| 久久婷婷久久| 国产肥臀一区二区福利视频| 99精品视频免费| 国产欧美日韩网站| 伊人久久亚洲热| 91亚洲精品国产| 中文字幕av亚洲精品一部二部| 一区不卡视频| 久久五月天小说| 翔田千里亚洲一二三区| 欧美日韩国产一区二区三区不卡| 欧美极品色图| 在线看成人短视频| 久久草.com| 亚欧日韩另类中文欧美| 久久av免费观看| 首页亚洲中字| 久久婷婷人人澡人人喊人人爽| 国产一级成人av| 久久精品人成| 蜜桃成人av| 久久久精彩视频| 天堂成人娱乐在线视频免费播放网站 | 精品自拍偷拍视频| 中文字幕中文在线不卡住| 免费看一级黄色| 成人欧美一区二区三区小说| 免费看特级毛片| 亚洲欧美视频在线观看视频| 妺妺窝人体色www婷婷| 亚洲成人福利片| 91精品国产高清一区二区三密臀| 91国产视频在线观看| 中文字幕一区二区三区四区免费看| 精品视频123区在线观看| 一级做a爱片性色毛片| 欧美一区二区三区视频在线观看| 亚洲成人av综合| 精品视频久久久久久| 电影av在线| 欧美精品亚州精品| 麻豆mv在线观看| 国产精品美女呻吟| 欧美成人精品一级| 精品伦精品一区二区三区视频| 欧美女王vk| 秋霞在线一区二区| 99精品视频免费观看| 亚洲综合在线网站| 国产美女精品人人做人人爽| 色哟哟视频在线| 国产农村妇女精品| 欧美又粗又大又长| 一本色道**综合亚洲精品蜜桃冫 | 精品美女被调教视频大全网站| 五月婷婷在线观看视频| 一区二区三区美女xx视频| 3d玉蒲团在线观看| 欧美影院久久久| 电影一区中文字幕| 欧美久久在线| 欧美在线亚洲| 任你操这里只有精品| 国产高清在线观看免费不卡| 黑人巨大精品欧美| 一区二区三区四区高清精品免费观看| 国产免费一级视频| 欧美一级高清片在线观看| 欧美日韩国产中文字幕在线| 久久综合电影一区| 精品欧美一区二区三区在线观看 | 在线观看免费视频黄| 欧美国产乱子伦| 日韩三级av在线| 制服丝袜亚洲色图| 国产在线黄色| 性色av香蕉一区二区| 精品午夜av| 日本最新一区二区三区视频观看| 国产精品v亚洲精品v日韩精品 | 看av免费毛片手机播放| 国产真实乱偷精品视频免| 在哪里可以看毛片| 亚洲成人激情av| www久久久com| 久久精品视频一| 欧美不卡高清一区二区三区| 国产日韩在线一区二区三区| 亚洲一区二区| 欧美丝袜在线观看| 国产视频一区二区三区在线观看 | 欧美视频自拍偷拍| 欧美色18zzzzxxxxx| 97成人在线视频| 成人三级毛片| 女女百合国产免费网站| 老司机精品视频一区二区三区| 色欲狠狠躁天天躁无码中文字幕 | 亚洲自偷自拍熟女另类| 成人3d动漫在线观看| 免费看一级大黄情大片| 成人中文字幕合集| 青娱乐国产盛宴| 日韩视频在线你懂得| 麻豆传媒在线完整视频| 国产精品一区二区电影| 成人网18免费网站| 三上悠亚久久精品| 成人国产亚洲欧美成人综合网| 久草中文在线视频| 精品国精品自拍自在线| 久久青青色综合| www.成人av| 一区在线视频| 中文字幕在线观看网址| 精品久久久久久| 暖暖视频在线免费观看| 日韩美女视频免费看| 久久99久久人婷婷精品综合 | 国产成人在线视频免费播放| 国产高潮流白浆| 精品粉嫩超白一线天av| 999福利在线视频| 精品一区二区三区免费毛片| 一本色道精品久久一区二区三区| 免费a在线观看播放| 色呦呦网站一区| 欧美私人网站| 亚洲一区亚洲二区亚洲三区| 国产精品成人一区二区网站软件| 欧产日产国产精品98| 婷婷夜色潮精品综合在线| 日韩在线无毛| 91精品国产自产在线| 欧美午夜一区| 亚洲欧美日本一区| 欧美唯美清纯偷拍| 成年人网站在线| 激情视频一区二区| 青青青爽久久午夜综合久久午夜| 极品美妇后花庭翘臀娇吟小说| 日韩久久精品一区| 刘亦菲一区二区三区免费看| 亚洲免费在线精品一区| 国产高清不卡一区| 亚洲 欧美 视频| 日韩一区在线视频| 国产精品久av福利在线观看| 亚洲精品无码久久久久久| 中文字幕中文字幕中文字幕亚洲无线| 不卡的日韩av| 国产成人久久久精品一区| 亚洲男女av一区二区| 中文成人无字幕乱码精品区| 欧美网站大全在线观看| 在线观看电影av| 欧美成人在线免费观看| 久久国产综合精品| 日本高清www免费视频| 色婷婷**av毛片一区| 成人资源在线| 中文字幕在线观看日 | 亚洲最大成人av| 午夜精品福利电影| 国产精品精品| 国产小视频自拍| 精品电影一区二区|