日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JS如何為promise增加abort功能

瀏覽:206日期:2024-03-31 09:03:30
概述

Promise只有三種狀態:pending、resolve、reject,一個異步的承諾一旦發出,經歷等待(pending)后,最終只能為成功或者失敗,中途無法取消(abort)。

為promise提供abort功能的思路有兩種:

手動實現abort,觸發取消后,異步回來的數據直接丟棄(手動實現,比較穩妥) 使用原生方法AbortController中斷請求(實驗中的方法,有兼容性,ie不支持)

手動實現abort方法有兩種模式:都是依賴promise的接口間接實現

promise race方法

let PromiseWithAbort = function(promise){ let _abort = null; let Pabort = new Promise((res,rej)=>{ _abort = function(reason =’abort !’){console.warn(reason);rej(reason); } }); let race = Promise.race([promise,Pabort]); race.abort = _abort; console.log(promise,Pabort); return race; }let p1= new Promise(res=>{ setTimeout(()=>{ res(’p1 success’); },2000)})let testP = PromiseWithAbort(p1);testP.then(res=>{ console.log(’success:’,res);},error=>{ console.log(’error:’,error);})testP.abort();// 結果: reject: abort!重新包裝promise

class PromiseWithAbort { constructor(fn){ let _abort = null; let _p = new Promise((res,rej)=>{fn.call(null,res,rej);_abort = function(error=’abort’){ rej(error); } }) _p.abort = _abort; return _p; } } let testP = new PromiseWithAbort((res,rej)=>{ setTimeout(() => { res(1); },1000); }); testP.then(r=>{ console.log(’res:’,r); },r=>{ console.log(’rej:’,r); }); testP.abort();//結果: rej: abortAbortController 

(這是一個實驗中的功能,歸屬于DOM規范,此功能某些瀏覽器尚在開發中)AbortController接口代表一個控制器對象,允許你在需要時中止一個或多個DOM請求。

// 中斷fetch請求 let controller = new AbortController(); let signal = controller.signal; fetch(’https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/finally’,{signal}).then(r=>{ console.log(r); }); controller.abort();//結果: Uncaught (in promise) DOMException: The user aborted a request.//中斷一個promiseclass PromiseWithAbortController { constructor(fn,{signal}){ if(signal && signal.aborted){ return Promise.reject(new DOMException(’Aborted’,’AbortError’)); } let _p = new Promise((resolve,reject)=>{ fn.call(null,resolve,reject); if(signal){signal.addEventListener(’abort’,()=>{ reject(new DOMException(’Aborted’,’AbortError’));}) } }); return _p; }}let controller = new AbortController(); let signal = controller.signal;let testP2 = new PromiseWithAbortController((r,j)=>{ setTimeout(() => { r(’success’); }, 1000);},{signal});testP2.then(r=>{ console.log(’res:’,r); },r=>{ console.log(’rej:’,r); }); controller.abort(); // 結果: rej: DOMException: AbortedAxios插件自帶取消功能

//1.使用source的tokenconst CancelToken = axios.CancelToken;const source = CancelToken.source();axios.get(’/user/12345’, { cancelToken: source.token}).catch(function (thrown) { if (axios.isCancel(thrown)) { console.log(’Request canceled’, thrown.message); } else { // handle error }});axios.post(’/user/12345’, { name: ’new name’}, { cancelToken: source.token})// cancel the request (the message parameter is optional)source.cancel(’Operation canceled by the user.’);//2. 通過傳出的functionconst CancelToken = axios.CancelToken;let cancel;axios.get(’/user/12345’, { cancelToken: new CancelToken(function executor(c) { // An executor function receives a cancel function as a parameter cancel = c; })});// cancel the requestcancel();//主要:使用相同token的請求可以一并取消

在現在項目中使用最頻繁的是axios,所以取消請求不用擔心。dom規范的AbortController,由于兼容性,不推薦使用。如果需要自己動手實現的話,還是文章前兩種方法較穩妥(promise race方法和重新包裝promise方法)。

以上就是JS為promise增加abort功能的詳細內容,更多關于JS的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
一区二区三区午夜视频| 日韩视频久久| 天堂精品久久久久| 人人爽香蕉精品| 性色一区二区| 99成人在线| 午夜在线视频观看日韩17c| 欧美另类综合| 日本欧美在线看| 婷婷视频一区二区三区| 色综合视频一区二区三区日韩 | 视频一区二区国产| 国产精品丝袜xxxxxxx| 日韩视频在线一区二区三区 | 日韩中文首页| 亚洲天堂一区二区| 欧美在线亚洲综合一区| 日韩中文字幕麻豆| 综合激情在线| 国产精品调教| 国产一区精品福利| 91精品国产自产在线观看永久∴| 亚洲福利国产| 热久久免费视频| 人人爱人人干婷婷丁香亚洲| 国产精品天堂蜜av在线播放| 老牛国内精品亚洲成av人片| 麻豆国产精品视频| 日韩高清中文字幕一区二区| 国产精品毛片在线看| 亚洲一级淫片| 欧美黄页在线免费观看| 亚洲www免费| 中文久久精品| 欧美伊人影院| 日韩精品诱惑一区?区三区| 国产精品嫩草99av在线| 91亚洲精品在看在线观看高清| 国产一区福利| 亚洲黄页一区| 欧美国产日韩电影| 亚洲四虎影院| 亚洲精品黄色| 成人午夜亚洲| 亚洲精品电影| 91成人福利| 日韩深夜视频| 日韩在线麻豆| 欧美xxxx中国| 亚洲另类视频| 国内不卡的一区二区三区中文字幕| 久久九九精品| 欧美日韩黄网站| 视频福利一区| 日韩av三区| 91看片一区| 午夜天堂精品久久久久| 精品一区二区三区中文字幕| 亚洲国产综合在线看不卡| 四虎成人精品一区二区免费网站| 免费在线欧美黄色| 精品日韩毛片| 国产美女久久| 欧美特黄一区| 欧美国产视频| 水野朝阳av一区二区三区| 美腿丝袜亚洲三区| 欧美日韩视频| 久久久久久夜| 香蕉久久久久久| 激情丁香综合| 国产乱论精品| 黄色国产精品| 中文在线免费视频| 久久国产麻豆精品| 欧美日韩国产高清电影| 国产精品xxx| 中文字幕一区二区三区四区久久 | 国产精品**亚洲精品| 91精品高清| 久久精品伊人| 日韩在线电影| 蜜桃视频欧美| 精品视频一区二区三区在线观看 | 免费看精品久久片| 美女福利一区二区三区| 国产探花一区| 在线观看视频免费一区二区三区| 久久男人天堂| 欧美激情在线精品一区二区三区| 亚洲日韩中文字幕一区| 1024精品一区二区三区| 国产不卡人人| 国产精品视频3p| 亚洲精品无播放器在线播放| 伊人精品一区| 韩国精品主播一区二区在线观看 | 蜜臀精品久久久久久蜜臀| 中文字幕高清在线播放| 青青伊人久久| 日本不卡视频一二三区| 亚洲激情精品| 三上悠亚国产精品一区二区三区| 久久中文精品| 免费在线观看一区| 国产亚洲精品美女久久久久久久久久| 丝袜美腿亚洲一区二区图片| 久久青青视频| 精品三级久久久| 国产精品v一区二区三区| 日本亚洲视频在线| 日韩精品国产欧美| 亚洲区欧美区| 亚洲tv在线| 伊人精品久久| 在线看片日韩| 亚洲精品美女91| 视频一区日韩| 青青草精品视频| 国产亚洲人成a在线v网站| 日本午夜精品视频在线观看| 日韩精品欧美成人高清一区二区| 亚洲欧美日韩国产综合精品二区 | 日本免费一区二区三区四区| 黑人精品一区| 在线日韩欧美| 红桃视频国产精品| 亚洲综合日本| 日韩影院免费视频| 综合视频一区| 日韩黄色在线观看| 青青伊人久久| 国产极品一区| 精品免费在线| 久久久精品国产**网站| 精品一区电影| 中文字幕成在线观看| 久久蜜桃精品| 激情久久婷婷| 香蕉久久夜色精品国产| 日欧美一区二区| 国产精品久久久久毛片大屁完整版| 欧美交a欧美精品喷水| 岛国精品一区| 亚洲成av人片一区二区密柚 | 亚洲激情中文| 日韩在线网址| 69堂精品视频在线播放| 国产精品一区二区免费福利视频| 麻豆精品少妇| www.com.cn成人| 激情91久久| 日本一区福利在线| 美女国产精品久久久| av亚洲在线观看| 水蜜桃久久夜色精品一区的特点| 麻豆国产精品一区二区三区| 欧美日韩一区二区三区视频播放| 欧美日韩国产综合网| 92国产精品| 久色成人在线| 日本少妇精品亚洲第一区| 在线精品视频在线观看高清| 免费视频最近日韩| 亚洲一级特黄| 欧美一级网站| 香蕉久久久久久| 亚洲一区二区三区免费在线观看| 国产激情久久| 成人在线免费观看网站| 国产精品视频一区视频二区| 国产精品国码视频| 捆绑调教美女网站视频一区| 亚洲激情中文在线| 久久中文字幕一区二区三区| 精品一区91| 亚洲三级视频| 欧美精品影院| 99久久99久久精品国产片果冰| 欧美一级网站| 蜜臀av性久久久久蜜臀aⅴ四虎| 美女性感视频久久| 欧美日韩尤物久久| 精品五月天堂| 成人高清一区| 亚洲最新无码中文字幕久久 | 亚洲区第一页| 女生影院久久| 日韩av福利| 国产精品传媒麻豆hd| 久久电影tv| 日韩中文首页| 91免费精品| 欧美成a人免费观看久久| 精品久久久久中文字幕小说| 国产欧美啪啪| 欧美久久天堂| 国产精品jk白丝蜜臀av小说| 亚洲午夜黄色| 99国产精品久久久久久久成人热|