Fetch 程式碼片段 (Snippets)
Fetch Params處理
注意 ! 複製此程式碼片段時,請將下面 "取代這裡" 取代成兩個反斜線 "\\"
"Fetch Params處理": {"prefix": "$fetchParam0001","body": ["//Fetch Params處理","//let ${2:fetch第二個參數名} = ${1:外部函數參數名} ?? {};//外部函數若未設置預設值為 {},則需要此行","if (${2:fetch第二個參數名}?.Params) {"," let method = ${2:fetch第二個參數名}?.method || \"GET\";"," switch (method) {"," case \"GET\":"," let count = 0;"," for (let [key, value] of Object.entries(${2:fetch第二個參數名}.Params)) {"," ${3:fetch第一個參數名 url} = (count == 0) ? `取代這裡${${3:fetch第一個參數名 url}}?取代這裡${key}=取代這裡${value}` : `取代這裡${${3:fetch第一個參數名 url}}&取代這裡${key}=取代這裡${value}`"," count++;"," }"," break;"," default:"," let ParamForm = new FormData();"," for (let [key, value] of Object.entries(${2:fetch第二個參數名}.Params)) {"," ParamForm.append(`取代這裡${key}`, `取代這裡${value}`);"," }"," ${2:fetch第二個參數名}[\"body\"] = ParamForm;"," break;"," }","}"],"description": "Fetch Params處理"}
單純的fetch
"單純的fetch": {"prefix": "$fetch001","body": ["//單純的fetch","fetch(${1:Urls_}, ${2:Params_ (接續使用fetchSecondParam001)})"," .then(Result => {"," const ResultJson = Result.clone().json();//Respone.clone()"," //做一些事情"," console.log(ResultJson)"," return ResultJson;"," })"," .then((PreResult) => {"," //前一個then()內的 return ResultJson 將成為 PreResult"," //做一些事情"," return PreResult;"," })"," .catch((Error) => {"," //catch函數是.then(null, rejection)或.then(undefined, rejection)的別名,用於捕獲處理錯誤。"," //如果前面的異步操作拋出錯誤,狀態就會變為rejected,就會調用catch函數內指定的回調函數,處理這個錯誤。"," //Promise物件的錯誤,會一直向後傳遞,直到被捕獲為止。"," console.log(Error)"," })"," .finally(() => {"," //finally()用於指定不管Promise物件最後狀態如何,都會執行的操作。"," //而finally()的回調函數不接受任何參數,這代表著沒有辦法知道,前面的Promise狀態到底是resolved還是rejected。"," //即是說,finally()裡面的操作,應該是與狀態無關的,不依賴於Promise的執行結果。"," });"],"description": "單純的fetch"}
fetch第二個參數
"fetch第二個參數": {"prefix": "$fetchSecondParam001","body": ["//fetch第二個參數","{"," // 預設選項以 * 標記"," method: '${1:可選參數 *GET、POST、PUT、DELETE、等等}',"," headers: {"," 'content-type': 'application/json'"," },"," body: ${2:body參數物件,要符合 header 內的 'Content-Type' }, "," cache: '${3:可選參數 : *default, no-cache, reload, force-cache, only-if-cached}', "," credentials: '${4:可選參數 : include, same-origin, *omit}', "," mode: '${5:可選參數 : no-cors, cors, *same-origin}', "," redirect: '${6:可選參數 : manual, *follow, error}', "," referrer: '${7:可選參數 : *client, no-referrer}', ","}"],"description": "fetch第二個參數"}