發表文章

目前顯示的是 1月, 2021的文章

JS:Promise.all及Promise.race

Promise.all及Promise.race使用筆記 all和race是一組工具函數,是幫助我們想要多個非同步工作同時進行的,使用方式是呼叫Promise.all(給Promise陣列)和Promise.race(給Promise陣列)。 all和race的差別是all會等待所有個Promise都resolve才會回傳陣列,而race是當有一個Promise已經resolve就會回傳結果。不過值得注意的是,兩著都是若有一個reject就會被中斷並返回reject的結果。 在上一篇中提到Promise和async可以混用,這裡馬上就用到,我們可以使用await等待Promise.all和Promise.race的結果,然後再對每個結果進行分析,下面會提供一個簡短的假想範例碼。

dayjs使用筆記

前言 最近因為APP資料處理速度太慢,其中發現一個部分的速度影響是因為parsing時間字串,所以做了時間轉換工具的遷徙,原本用moment到dayjs,因看dayjs使用上與moment接近。在模擬器上跑parsing時間字串的時間至少有2倍的速度提升,實機上則有更大幅度的速度提升。更多的優點是它核心容量很小,可以提高載入速度。 安裝 yarn add dayjs dayjs基本用法 let m = dayjs('時間字串') 之前用moment是 let m = new moment('時間字串') 確認是dayjs物件 m instanceof dayjs // 這個寫法在早期的dayjs沒支援 取用年月日時分秒 秒鐘 m.second(), // 0-59 分鐘 m.minute(), // 0-59 小時 m.hour(), // 0-23 日期 m.date(), // 1-31 月份 m.month(), // 0-11 年分 m.year(), // e.g. 2020 比較時間 相同時間 m1.isSame(m2, 可略的比較時間單位) 時間在後面 m1.isAfter(m2, 可略的比較時間單位) 反之用isBefore 計算時間差 m1.diff(m2, 可略的比較時間單位) 可略的比較時間單位有'day','hour','minute'等等 格式化成字串 m.format() //  相當於  m.format("YYYY-MM-DDTHH:mm:ssZ") m.format('[YYYYescape] YYYY-MM-DDTHH:mm:ssZ[Z]')  在format內用[]可保留使用的字元不被轉換成時間數字,上面的輸出就會是'YYYYescape 2019-01-25T00:00:00-02:00Z' 額外模組 因為dayjs有分模組,來降低整體套件的容量,我這裡介紹列出用到的部分 import   dayjs   from   'dayjs' ; import   pluginExtFmt   from   'dayjs/plugin/advancedFormat' ; 

解決VSCode寫jest測試React Native沒有自動補完的問題

圖片
解決自動補完(Autocomplete)問題 要讓VSCode自動補完需要套件支援 在專案下安裝套件 yarn add @types/jest --dev 安裝完後重開VSCode就會出現補完項目了! VSCode其他jest推薦套件 個人推薦還可以安裝VSCode的jest套件,協助執行單一test項目的測試 1. Jest - 當你程式存檔時會自動執行測試 2. Jest Snippets - 寫測試時輸入幾個字就可以產生固定template的套件

將cmder設為VSCode預設終端機

圖片
因為之前已經習慣用cmder開發APP,只是一直都是分開使用VSCode和cmder,剛看到整合使用shell的例子覺得有必要加入VSCode。 如果你會開啟setting,json,直接開起來加入下面設定2行即可     "terminal.integrated.shell.windows": "cmd.exe",     "terminal.integrated.shellArgs.windows": [         "/k", "%CMDER_ROOT%\\vendor\\init.bat"     ], 這設定是 cmder官方提供的設定方法 ,記得先設定環境變數CMDER_ROOT為你的cmder路徑。 如果不會開啟setting.json,請跟隨以下指引開setting.json 需要先開啟VSCode的終端機功能(如下圖下方列) 按終端機右上角的選單,點擊" 設定終端設定 " (如圖右下) 接著就會開啟下圖左方的這個的畫面,稍微向下滾動找到" 在 settings.json 內編輯 " 另外官方github也有該如何整合進Windows的右鍵選單 https://github.com/cmderdev/cmder/wiki/Context-menu-integration

JS:Async函數跟Promise簡記

Async函數跟Promise簡記 async函數是ES2017(ES8)才支援的 功能 。不過我最近工作使用React-Native 0.63版預設都有了。 async函數內可用await關鍵字,等待async/promoise的執行結果,而且arrow function也可用aync關鍵字,這裡以fetch這個async函數簡易示範如下: const MyAsync = async () => {   return await fetch('http://tw.yahoo.com'); }