回不去惹,用 await-to-js 讓你的 Promise 操作簡潔又俐落!

閱讀時間約 3 分鐘
鱈魚的魚缸搬家了!新家文章有重新修訂,歡迎來新家看看喔。(´▽`ʃ♡ƪ)
raw-image


前陣子意外注意到一個有趣的套件,名為 await-to-js

主要用途是改寫 Promise 與 await 的寫法,具體如下。


具體差在哪?

假設原本的 Promise 是這樣:

let isLoading = true;
task().then(() => {
console.log('done');
}).catch(() => {
console.error('error');
}).finally(() => {
isLoading = false;
});


用 await 會這樣寫。

let isLoading = true;
try {
await task()
console.log('done');
} catch(){
console.error('error');
}
isLoading = false;


使用 await-to-js 改寫後變成:

import to from 'await-to-js';

let isLoading = true;
const [error] = await to(task())
isLoading = false;

if (error) {
console.error('error');
retuen;
}

console.log('done');

除了看起來比較簡潔,不用 try catch 外,配合 early return 很有效。


在前端可能還好,在後端各種連續 Promise 操作的場合配合 early return 很方便,從此以後寫法再也回不去了。XD

await-to-js 的實現很簡單,他的原始碼只有 22 行。

/**
* @param { Promise } promise
* @param { Object= } errorExt - Additional Information you can pass to the err object
* @return { Promise }
*/
export function to<T, U = Error> (
promise: Promise<T>,
errorExt?: object
): Promise<[U, undefined] | [null, T]> {
return promise
.then<[null, T]>((data: T) => [null, data])
.catch<[U, undefined]>((err: U) => {
if (errorExt) {
const parsedError = Object.assign({}, err, errorExt);
return [parsedError, undefined];
}

return [err, undefined];
});
}

export default to;

如果不想 npm install 的話,也可以直接貼到自己的專案使用。ヾ(◍'౪`◍)ノ゙


所以所有的 Promise 都改用 await to 嗎?

當然不是這樣啦,await to 只是多一個選擇。


實際上還是有些地方更適合使用 then 或 try catch,請依照實際情況挑選適合的寫法喔。(。・∀・)ノ゙

17會員
14Content count
各種鱈魚滾鍵盤的雜紀
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
過去了,失去了,也許就回不去了。 手術之後,健康回不去了; 變心之後,愛情回不去了; 變胖之後,身材回不去了; 離家之後,故鄉回不去了; 長大之後,童真回不去了; 退休之後,青春回不去了; 犯錯之後,誠信回不去了; 出走之後,夢想回不去了; 分手之後,擁抱回不去了; 痛哭之後,歡
Thumbnail
農業的發明宛如普羅米修斯盜取天火,自此人類再也回不去昨日世界。自此人類文化的變遷快速超越了幾百萬年的自然演化。我們已然創造出一個新世界,不過我們的身體還停留在昨日世界,我們的身體仍以石器時代演化出的機制對應這個新世界,尤其是飲食。身為雜食者,我們幾乎甚麼都吃,而我們的身體對於於高能量食物的深情偏好,
Thumbnail
過去的事,的確真的就"回不去了",但是,就真的都"過去了"嗎? 想到這裡,腦海中突然浮現出一首當年"六四運動"的一首歌的歌詞,"蒙上眼睛,就以為看不見;捂上耳朵,就以為聽不到” 事實並非如此,其實我們的過往傷痛都只是暫時處於休眠狀態,有一天,累積到一個程度,會將之前蓄積的情緒熔岩,天崩地裂的爆發
Thumbnail
改編義大利小說《回不去的那座山》,是以兩名男人彼此的友誼為出發點的電影。隨父母搬去山裡村落的皮耶托,認識了山村同齡的孩子布魯諾,兩人產生親密的友誼,但隨布魯諾不告而別告終。多年後皮耶托因父親離世回到家鄉,遇到同樣前來的布魯諾,多年未見的兩人重新敘舊,繼續這份20年的情誼,然而成人世界卻越發複雜……
網路日新月異,因此社交軟體一在出新汰換,而盲用軟體卻依再跟不上時代的腳步,我們不是要跟風、跟時尚、跟流行,只是要能與宇宙人類接軌交流。 貧富差距越來越大也是回不去,然到一定要等到地球暖化到不可收拾才能回到過往大家貧富相當的生活嗎?其實現在也是可以貧富懸殊不那麼大,只是要看宇宙人要不要決策,怎麼執行
Thumbnail
錯誤的政策,會在城市發展的脈絡裡,劃下一刀很深的傷痕,縱使市長會換人,但那些已經造成的傷害,卻會讓未來的人們斷聯了曾經有過的歷史 再次回來了洲美社區,這裡被前一任的台北市府強制開發成科技園區的洲美聚落,號稱是台灣國際龍舟賽發源地的屈原宮,廟前不見原始群聚的聚落,徒留大片荒蕪人煙的工地,而未來預計拔地
怎麼了,又在一次回到了原點,昨天的夢魘,還有誰能夠明白,這一切的熟悉都只是虛假的,如果在一次回到從前,是否妳會看的見?如果能夠回朔到那一天,那一切的句點,就不會有分別的那一天。
我跟著遺憾老去 也回不去那些的曾經 只有在夜裡 品嚐著那些不該的話語
Thumbnail
買進大趨勢裡的領頭羊,是一個絕佳好方法。有多好呢?如果你手上籌碼是各個趨勢的領頭羊,那麼 2020 別人的災難年;其實是你的豐收年。想知道 Spotify 是否具備投資價值?就得先回答「串流音樂是大趨勢嗎?」鬼宿認為:能寵壞使用者,讓人從心裡覺得「我們回不去了!」它就是「大趨勢。」
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
過去了,失去了,也許就回不去了。 手術之後,健康回不去了; 變心之後,愛情回不去了; 變胖之後,身材回不去了; 離家之後,故鄉回不去了; 長大之後,童真回不去了; 退休之後,青春回不去了; 犯錯之後,誠信回不去了; 出走之後,夢想回不去了; 分手之後,擁抱回不去了; 痛哭之後,歡
Thumbnail
農業的發明宛如普羅米修斯盜取天火,自此人類再也回不去昨日世界。自此人類文化的變遷快速超越了幾百萬年的自然演化。我們已然創造出一個新世界,不過我們的身體還停留在昨日世界,我們的身體仍以石器時代演化出的機制對應這個新世界,尤其是飲食。身為雜食者,我們幾乎甚麼都吃,而我們的身體對於於高能量食物的深情偏好,
Thumbnail
過去的事,的確真的就"回不去了",但是,就真的都"過去了"嗎? 想到這裡,腦海中突然浮現出一首當年"六四運動"的一首歌的歌詞,"蒙上眼睛,就以為看不見;捂上耳朵,就以為聽不到” 事實並非如此,其實我們的過往傷痛都只是暫時處於休眠狀態,有一天,累積到一個程度,會將之前蓄積的情緒熔岩,天崩地裂的爆發
Thumbnail
改編義大利小說《回不去的那座山》,是以兩名男人彼此的友誼為出發點的電影。隨父母搬去山裡村落的皮耶托,認識了山村同齡的孩子布魯諾,兩人產生親密的友誼,但隨布魯諾不告而別告終。多年後皮耶托因父親離世回到家鄉,遇到同樣前來的布魯諾,多年未見的兩人重新敘舊,繼續這份20年的情誼,然而成人世界卻越發複雜……
網路日新月異,因此社交軟體一在出新汰換,而盲用軟體卻依再跟不上時代的腳步,我們不是要跟風、跟時尚、跟流行,只是要能與宇宙人類接軌交流。 貧富差距越來越大也是回不去,然到一定要等到地球暖化到不可收拾才能回到過往大家貧富相當的生活嗎?其實現在也是可以貧富懸殊不那麼大,只是要看宇宙人要不要決策,怎麼執行
Thumbnail
錯誤的政策,會在城市發展的脈絡裡,劃下一刀很深的傷痕,縱使市長會換人,但那些已經造成的傷害,卻會讓未來的人們斷聯了曾經有過的歷史 再次回來了洲美社區,這裡被前一任的台北市府強制開發成科技園區的洲美聚落,號稱是台灣國際龍舟賽發源地的屈原宮,廟前不見原始群聚的聚落,徒留大片荒蕪人煙的工地,而未來預計拔地
怎麼了,又在一次回到了原點,昨天的夢魘,還有誰能夠明白,這一切的熟悉都只是虛假的,如果在一次回到從前,是否妳會看的見?如果能夠回朔到那一天,那一切的句點,就不會有分別的那一天。
我跟著遺憾老去 也回不去那些的曾經 只有在夜裡 品嚐著那些不該的話語
Thumbnail
買進大趨勢裡的領頭羊,是一個絕佳好方法。有多好呢?如果你手上籌碼是各個趨勢的領頭羊,那麼 2020 別人的災難年;其實是你的豐收年。想知道 Spotify 是否具備投資價值?就得先回答「串流音樂是大趨勢嗎?」鬼宿認為:能寵壞使用者,讓人從心裡覺得「我們回不去了!」它就是「大趨勢。」