Friday, December 10, 2021

開發 ClojureScript 時,檢查 Promise 裡的值

通常,在開發 ClojureScript 時,如果需要檢查 Promise 裡的值,我會寫成如下的程式碼:
;; Using lambdaisland fetch, kitchen-async (p/let [resp (fetch/get "temp-url")] (def resp resp)) ;; Then, I evaluate resp to know the value.

使用 def 來取得 promise 值。

為什麼會這樣子寫呢?因為 prn 會把值輸出到 browser 的 console log 去,而 browser 的 console log 已經有太多東西了。

其實還有另一個方案,使用 tap>。於是,程式寫成這樣子:
(p/let [resp (fetch/get "temp-url")] (tap> {:response resp}))

使用 tap> 的好處是,我只要把 browser 指向 port 9630 ,就可以很容易地看到 tap> 輸出的值了。