1. 程式人生 > >工作中遇到的技術問題備忘(三): 讓 JSON.parse 出錯後繼續執行

工作中遇到的技術問題備忘(三): 讓 JSON.parse 出錯後繼續執行

這裡不是把專案程式碼複製過來之後有些地方修改了一下, 沒執行, 不知道是否奏效

/* 程式碼註解:
* 1. 使用 promise 使得 JSON.parse 出錯時程式能夠繼續執行
* 2. 因為 then 中的函式是非同步執行,可能導致原始碼中想要 Object.assign 時 result 仍為屬性未 parse 的狀態,所以每次 parse 成功都呼叫一次 assign
* 3. 本來想用 Promise.all() ,但是這樣的話出錯一次後面就不執行了,在網上搜了一搜,找到了一些解決方法,但是沒弄
* */
Object.values(result).map(item => { // 遍歷請求回來的物件
if (typeof item === 'string') { (function (item) { return new Promise(function (resolve, reject) { var parsed = JSON.parse(item); resolve(parsed); reject(JSON.parse(item)); }); })(key).then(parsed => { // 每次完成請求都處理一次
result[key] = parsed; this.production = Object.assign({}, this.production, result); }).catch(function (err) { // 錯誤處理 }) } });