深入理解ES6 Promise 擴(kuò)展always方法
ES6添加了Promise對象,成功時在then中處理,失敗則在catch中處理,但有時候,我們需要在無論成功或失敗時都要做一些事,比如隱藏loading, 記錄日志等等,下面我們以瀏覽器端ajax請求為例,我們使用axios(它是基于Promise的):
axios.get("/").then(()=>{
//處理邏輯
...
console.log("請求結(jié)束")
hideLoading();
}).catch(()=>{
console.log("請求結(jié)束")
hideLoading();
})
這樣的代碼, 很冗余。每到這個時候都有點(diǎn)懷念jQuery:
$.get("/").done(()=>{
//處理邏輯
}).always(()=>{
console.log("請求結(jié)束")
hideLoading();
})
es6-promise-always正是對ES6的功能做了一個擴(kuò)充,使其支持always,并同時支持node和browser.
使用
1.安裝
npm install es6-promise-always --save
2.引入使用
require("es6-promise-always")
axios.get("/").then(()=>{
//處理邏輯
}).always(()=>{
console.log("請求結(jié)束")
hideLoading();
})
always(data, error)
- data: resolve的數(shù)據(jù)。
- error: reject的數(shù)據(jù)。
Tips
不要擔(dān)心這個會讓你的程序變胖!es6-promise-always非常小。剛開始實(shí)現(xiàn)時always時,走錯了方向,辛好迷途知返。github地址:https://github.com/wendux/es6-promise-always
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于使用 jBox 對話框的提交不能彈出問題解決方法
在 ASP.NET Form 中使用 jBox 的時候,在按鈕注冊的客戶端點(diǎn)擊事件中,會發(fā)現(xiàn)不能彈出對話框問題2012-11-11
JavaScript實(shí)現(xiàn)下拉列表選擇框
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)下拉列表選擇框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
Javascript將雙字節(jié)字符轉(zhuǎn)換成單字節(jié)字符并計算長度
這篇文章主要介紹Javascript將雙字節(jié)字符轉(zhuǎn)換成單字節(jié)字符并計算長度的方法,簡單實(shí)用,需要的朋友可以參考下。2016-06-06
JS實(shí)現(xiàn)選中當(dāng)前菜單后高亮顯示的導(dǎo)航條效果
這篇文章主要介紹了JS實(shí)現(xiàn)選中當(dāng)前菜單后高亮顯示的導(dǎo)航條效果,涉及JavaScript針對頁面元素的遍歷及樣式動態(tài)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10

