[Scala] 一次打十二個--透過 Future 和 For-Comprehensive 解決 Callback 地獄

話說這幾年用 Non-Blocking 的典範來寫程式很夯(例如 NodeJS 上幾乎都是 Non-Blocking),不過用 Non-Blocking 寫程式的時候,有時候程式碼會因為 Callback 的關係變得很雜亂,需要花一些時間來整理和維護,俗稱 Callback 地獄,後來大家也發展了不少的技巧來避免和減清這個問題。

不過這個問題在 Scala 上其實不太嚴重,主要因為 Scala 從函式編程引入的 Monad 的觀念和他的 for 迴圈的語法實在是太強大了……透過 Scala 標準函式庫內建 Future 類別和 for 迴圈,我們可以很輕鬆地把本來是 Blocking 的操作變成 Non-Blocking 操作,並且解決掉這類的 Callback 地獄問題。

口說為憑,我們直接來看一個例子好了。

話說台北市的開放資料網站上提供了行人垃圾筒的物件,但是卻是十二個行政區都是獨立的網址。如果今天我們想要取得台北市內所有的行人垃圾筒的資料並整合成一個單獨的 ...