回不去惹,用 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 操作的場合的很方便,從此以後寫法再也回不去了。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 的話,也可以直接貼到自己的專案使用。ヾ(◍'౪`◍)ノ゙

8會員
10內容數
各種鱈魚滾鍵盤的雜紀
留言0
查看全部
發表第一個留言支持創作者!
鱈魚的魚缸 的其他內容
你可能也想看
創作者要怎麼好好休息 + 避免工作過量?《黑貓創作報#4》午安,最近累不累? 這篇不是虛假的關心。而是《黑貓創作報》發行以來可能最重要的一篇。 是的,我們這篇講怎麼補充能量,也就是怎麼休息。
Thumbnail
avatar
黑貓老師
2024-06-29
回不去了過去了,失去了,也許就回不去了。 手術之後,健康回不去了; 變心之後,愛情回不去了; 變胖之後,身材回不去了; 離家之後,故鄉回不去了; 長大之後,童真回不去了; 退休之後,青春回不去了; 犯錯之後,誠信回不去了; 出走之後,夢想回不去了; 分手之後,擁抱回不去了; 痛哭之後,歡
avatar
退休教授:慕鐸
2023-12-27
回不去的昨日世界:<雜食者的兩難>讀後農業的發明宛如普羅米修斯盜取天火,自此人類再也回不去昨日世界。自此人類文化的變遷快速超越了幾百萬年的自然演化。我們已然創造出一個新世界,不過我們的身體還停留在昨日世界,我們的身體仍以石器時代演化出的機制對應這個新世界,尤其是飲食。身為雜食者,我們幾乎甚麼都吃,而我們的身體對於於高能量食物的深情偏好,
Thumbnail
avatar
在南方的黃昏裡遇見夕陽
2023-12-08
回不去的事vs過不去的坎過去的事,的確真的就"回不去了",但是,就真的都"過去了"嗎? 想到這裡,腦海中突然浮現出一首當年"六四運動"的一首歌的歌詞,"蒙上眼睛,就以為看不見;捂上耳朵,就以為聽不到” 事實並非如此,其實我們的過往傷痛都只是暫時處於休眠狀態,有一天,累積到一個程度,會將之前蓄積的情緒熔岩,天崩地裂的爆發
Thumbnail
avatar
情緒導護師/療癒師Julie
2023-10-15
《回不去的那座山》有些事只在山裡頭改編義大利小說《回不去的那座山》,是以兩名男人彼此的友誼為出發點的電影。隨父母搬去山裡村落的皮耶托,認識了山村同齡的孩子布魯諾,兩人產生親密的友誼,但隨布魯諾不告而別告終。多年後皮耶托因父親離世回到家鄉,遇到同樣前來的布魯諾,多年未見的兩人重新敘舊,繼續這份20年的情誼,然而成人世界卻越發複雜……
Thumbnail
avatar
陸坡 (LUPO)
2023-07-31
回不去的家鄉突然想讀點散文⋯⋯
Thumbnail
avatar
木天心
2023-05-24
回不去的年代網路日新月異,因此社交軟體一在出新汰換,而盲用軟體卻依再跟不上時代的腳步,我們不是要跟風、跟時尚、跟流行,只是要能與宇宙人類接軌交流。 貧富差距越來越大也是回不去,然到一定要等到地球暖化到不可收拾才能回到過往大家貧富相當的生活嗎?其實現在也是可以貧富懸殊不那麼大,只是要看宇宙人要不要決策,怎麼執行
avatar
小熊
2023-05-03
回不去的洲美聚落錯誤的政策,會在城市發展的脈絡裡,劃下一刀很深的傷痕,縱使市長會換人,但那些已經造成的傷害,卻會讓未來的人們斷聯了曾經有過的歷史 再次回來了洲美社區,這裡被前一任的台北市府強制開發成科技園區的洲美聚落,號稱是台灣國際龍舟賽發源地的屈原宮,廟前不見原始群聚的聚落,徒留大片荒蕪人煙的工地,而未來預計拔地
Thumbnail
avatar
施景耀 @ 文化轉譯家
2023-04-14
回不去怎麼了,又在一次回到了原點,昨天的夢魘,還有誰能夠明白,這一切的熟悉都只是虛假的,如果在一次回到從前,是否妳會看的見?如果能夠回朔到那一天,那一切的句點,就不會有分別的那一天。
avatar
Facilote Bard
2022-08-24
【回不去】我跟著遺憾老去 也回不去那些的曾經 只有在夜裡 品嚐著那些不該的話語
avatar
蘇 遇
2020-09-29
回不去的使用者體驗!從投資視角看 Spotify|美股實境秀 # 5買進大趨勢裡的領頭羊,是一個絕佳好方法。有多好呢?如果你手上籌碼是各個趨勢的領頭羊,那麼 2020 別人的災難年;其實是你的豐收年。想知道 Spotify 是否具備投資價值?就得先回答「串流音樂是大趨勢嗎?」鬼宿認為:能寵壞使用者,讓人從心裡覺得「我們回不去了!」它就是「大趨勢。」
Thumbnail
avatar
鬼宿
2020-07-29