200
; 應改根據不一樣狀況返回不一樣的 HTTP 狀態碼。通過討論,新項目採用上述方式返回處理結果,因此以往項目中根據返回結果的 errcode
判斷是否錯誤的作法沒法再適用,在接收 400
以上的結果時必須 catch.Promise.prototype.then().catch();
。async/await
而後使用 try/catch
。try/catch
不夠優雅。async/await
異常處理?這個問題有大佬比我先想到javascript
還有對上文的引申java
function to(promise) { if (!promise || !Promise.prototype.isPrototypeOf(promise)) { return new Promise((resolve, reject) => { reject(new Error('參數必須是 promise')); }).catch((err) => { return [err, null]; }); } return promise.then(data => { return [null, data]; }).catch(err => { return [err, null]; }); }
async function f() { const [error, data] = await to(...); if(error){ ... } ... }
引用 segmentfault 用戶 邊城 的結論node
用什麼方式取決於適用場景、團隊約定和我的喜愛等多種因素,在不一樣的狀況下須要採用不一樣的處理方式,並非說哪種就必定好於另外一種——合適的纔是最好的!
歡迎轉載,轉載請註明出處:http://blog.kaguramea.me/archives/js-async-method-catchajax