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

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

JS如何為promise增加abort功能

瀏覽:203日期: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久久,三上悠亚国产精品一区二区三区
麻豆视频一区| 国产精品久久久久久久久妇女| 国产一区一一区高清不卡| 久久精品九色| 水蜜桃精品av一区二区| 久久精品在线| 国产视频一区在线观看一区免费| 视频一区欧美精品| 国产麻豆一区二区三区精品视频| 美女在线视频一区| 麻豆精品视频在线观看| 欧美日韩尤物久久| 蜜臀国产一区二区三区在线播放| 日韩精品亚洲aⅴ在线影院| 国产乱人伦精品一区| 国产一区二区三区黄网站 | 成人精品动漫一区二区三区| 国产精品亚洲一区二区三区在线观看| 日韩精品一区二区三区免费观看| 影院欧美亚洲| 国产欧美亚洲精品a| 国产精品成久久久久| 欧美va天堂| 国产精品丝袜在线播放| 99精品综合| 日韩欧美久久| 国产在线|日韩| 日韩1区2区3区| 岛国av在线网站| 蜜桃一区二区三区在线| 国产一区二区三区精品在线观看| 亚洲欧美久久| 精品国产欧美| 美女精品在线| 日本黄色精品| 日韩一二三区在线观看| 狠狠久久伊人中文字幕| 蜜桃视频欧美| 国产精品一国产精品k频道56| 日韩在线短视频| 日韩av字幕| 欧美日韩国产一区精品一区| 麻豆91精品视频| 综合激情婷婷| 久久久久国产一区二区| 国产欧美丝祙| 蜜臀久久99精品久久久久久9| 久久免费精品| 婷婷综合福利| 国产高清一区二区| 97精品在线| 国产精品视频3p| 婷婷丁香综合| 水蜜桃精品av一区二区| 久久激五月天综合精品| 久久福利一区| 欧美日韩在线网站| 国产成年精品| 国产精品毛片视频| 亚洲ab电影| 午夜国产精品视频| 日韩在线欧美| 国产一区二区三区国产精品| 欧美一区影院| 中文字幕日本一区| 欧美日韩少妇| 激情欧美一区二区三区| 久久精品国产99国产| 欧美日韩xxxx| 蜜臀a∨国产成人精品| 欧美日中文字幕| 日韩精品91| 国产一区二区三区不卡视频网站 | 综合亚洲自拍| 野花国产精品入口| 久久中文字幕二区| se01亚洲视频| 欧洲精品一区二区三区| 国产成人精品一区二区三区免费| 国产欧美日韩在线观看视频 | 亚洲黄色免费看| 精品欠久久久中文字幕加勒比| 青草国产精品久久久久久| 亚洲区欧美区| 免费在线观看视频一区| 在线亚洲精品| 亚洲欧洲一区| 日韩视频在线一区二区三区 | 亚洲一级黄色| 999精品色在线播放| 国产色播av在线| www.51av欧美视频 | 久久久久免费| 国产精品久久久久蜜臀| 久久久免费人体| 国产精品久av福利在线观看| 国产精品久久久久久av公交车 | 色综合视频一区二区三区日韩 | 久久狠狠亚洲综合| 91麻豆精品激情在线观看最新| 亚洲欧美日本国产| 蜜臀久久久久久久| 日韩精品久久久久久| 日韩国产成人精品| 免费久久精品视频| 亚洲综合色婷婷在线观看| 婷婷综合一区| 日韩av成人高清| 日韩国产欧美在线播放| 青草av.久久免费一区| 欧美视频久久| 精品中文在线| 日韩毛片在线| 99亚洲视频| 亚洲欧美在线专区| 国产精品一区二区中文字幕| 精品久久一区| 久久中文视频| 中文精品电影| 国产欧美一区二区色老头| 国产成人精品免费视| 欧美成人亚洲| 日韩av在线免费观看不卡| 国产欧美日韩精品一区二区免费 | 日韩美女精品| 国产精品一区二区三区www| 精品国产三区在线| 色爱av综合网| 综合国产精品| 国产精品久久久久久久久免费高清| 久久精品免费看| 尤物tv在线精品| 在线亚洲观看| 国产极品嫩模在线观看91精品| 在线天堂中文资源最新版| 99热精品在线观看| 国产精品一区三区在线观看| 99精品电影| 亚洲区欧美区| 国产成年精品| 一本一道久久a久久| 精品视频高潮| 好吊一区二区三区| 久久国内精品自在自线400部| 成人在线黄色| 丝瓜av网站精品一区二区| 欧美精品97| 视频福利一区| 日韩精品久久理论片| 99久久www免费| 久久精品凹凸全集| 国产高清一区| 国产一区二区三区四区大秀| 日本欧美在线看| 高清日韩欧美| 日韩免费精品| 国产字幕视频一区二区| 国产精品网站在线看| 好吊视频一区二区三区四区| 欧美国产免费| 首页欧美精品中文字幕| 国产精品久久观看| 蜜臀精品一区二区三区在线观看 | 亚洲一二av| 欧美日一区二区| 欧美91在线|欧美| 蜜桃久久av一区| 日韩精品网站| 精品视频国产| 欧美亚洲tv| 亚洲一区欧美| 精品一区毛片| 精品一区二区三区中文字幕视频| 在线精品亚洲| 欧美精品一卡| 欧美不卡高清一区二区三区| 国产极品久久久久久久久波多结野| 视频在线观看91| 欧美日韩国产在线一区| 日产精品一区二区| 亚洲一区有码| 99视频一区| 婷婷成人在线| 日本午夜大片a在线观看| 婷婷综合一区| 亚洲国产影院| 中文字幕高清在线播放| 中文字幕日本一区| 欧美特黄视频| 午夜国产一区二区| 色88888久久久久久影院| 国产成人久久精品麻豆二区| 国产欧美欧美| 日本午夜精品久久久久| 亚洲69av| 亚洲精品一级二级三级| 99re国产精品| 婷婷国产精品| 久久激情中文| 久久婷婷av|