[小菜一碟] 搞懂 Day.js Timezone 外掛套件的使用方式
- 108
- 0
- JavaScript
最近專案有一個需求,需求當中的一個小部分是要在網頁上將使用者輸入的內容壓縮起來存檔,之後使用者再開啟這個檔案解壓縮顯示壓縮前的內容在網頁上,仔細想想現在的硬碟空間都那麼大,好像沒有什麼壓縮的必要,但是使用者覺得有必要,那也只好做給他了。
我們在追蹤客戶端行為時,多多少少會遇到一個場景,就是要在使用者把網頁視窗關閉時,將記錄送回伺服器端,做法上我們可能會想在網頁視窗觸發 unload 事件的時候,發送 AJAX Request 回伺服器端就好了,但是這個方法在一些瀏覽器上(比如:Firefox)不 Work,取而代之 Web APIs 提供了更好的 API - sendBeacon()。
在 JavaScript 的 Promise API 中,要處理一個 Promise 的集合,有 Promise.all()、Promise.any()、…等等,可是這些 API 要嘛要等全部的 Promise 都完成了,要嘛是任一個,而且只有一個 Promise 完成了,才能串接後續的處理,沒有那種依照完成的先後順序一個接一個串接後續處理的 API,不過沒關係,利用 Promise 的特性,我們也是能做到類似的效果。
這件事情說穿了其實就是用 Babel,平常就有在關注前端技術發展的朋友應該不陌生,Babel 可以將 JavaScript 比較新的語法轉譯成通用的寫法,讓舊版的瀏覽器(例如:IE)可以執行,我們就不需要為了舊版的瀏覽器而捨棄新語法。
JavaScript ES8(ES2017)的版本支援 async/await 語法,就像這樣:
這個語法對於主力是 C# 的我們並不陌生,async/await 語法可以在該進行等候資源的時候進行等候,而且不會打亂我們閱讀程式碼的順序,清晰度大大提昇,不過我很好奇,它是怎麼辦到的?
平常寫最多的程式語言是 C#,這天在寫 JavaScript 的時候想到「JavaScript 有唯讀屬性嗎?」,以前有唯讀屬性的需求時,通常我都是這樣寫:
但是嚴格來講 fullName
是 Function 不是 String,JavaScript 也告訴我它是 Function。
那究竟 JavaScript 有沒有唯讀屬性呢?