[小菜一碟] 在 JavaScript 依照 Resolve 的順序處理 Promise

在 JavaScript 的 Promise API 中,要處理一個 Promise 的集合,有 Promise.all()、Promise.any()、…等等,可是這些 API 要嘛要等全部的 Promise 都完成了,要嘛是任一個,而且只有一個 Promise 完成了,才能串接後續的處理,沒有那種依照完成的先後順序一個接一個串接後續處理的 API,不過沒關係,利用 Promise 的特性,我們也是能做到類似的效果。

...繼續閱讀 »

[小菜一碟] 如何依據網頁內容變換網址但不必重新整理網頁

自從 AJAX 問世之後,由於節省頻寬、提升網頁回應速度的效果顯著,被大量採用,甚至發展出了 SPA,但是這樣反而出現了一個副作用,就是我們無法將網頁最終呈現的結果透過 URL 分享出去,不利於 SEO,我們就來看一下,怎麼在都是用非同步請求取得網頁內容的情況下,變換網址。

...繼續閱讀 »

[小菜一碟] 在 JavaScript 的 Array.prototype.forEach() 方法實現 continue; 及 break; 的效果

眾所皆知,在 JavaScript 中的 Array 有一個 forEach() 方法很好用(而且 IE 9 以上有支援),大部分的使用情境都可以用來取代傳統的 for 語法,但難免會有需要 continue 或 break 的場景,continue;break; 在 forEach() 方法中是不會有作用的,我們需要換個方式來做。

...繼續閱讀 »

[料理佳餚] 拐個彎的 JavaScript 的私有欄位(Private Field)

這天,我想要在 JavaScript 的 Class 中加入一個私有欄位(Private Field),用來封裝建構式傳入的參數,以提供給唯讀屬性使用,爬文研究之後發現,雖然 JavaScript 有定義私有欄位的語法,但它是實驗性質的功能,不一定每個瀏覽器都有支援,至少目前為止 Firefox 就完全不支援,所以我得拐個彎了。

...繼續閱讀 »