2017-08-15 31 views
0

這兩個代碼塊是否相同?我期待打開.catch()並記錄錯誤,但我仍然希望該錯誤「未被捕獲」,我可以將它返回嗎?還是它需要包裝在Promise.reject()打開'.catch`後拒絕錯誤

方框A:

soSomething() 
    .then(() => { 
     return "meow" 
    }) 
    .catch(() => { 
     console.log(err) 
     return err 
    }) 

塊B:

soSomething() 
    .then(() => { 
     return "meow" 
    }) 
    .catch(() => { 
     console.log(err) 
     return Promise.reject(err) 
    }) 

回答

3

兩個圖案是不一樣的。

第一個處理錯誤並返回一個解析的Promise,達到鏈接.then()上的第一個函數參數。

第二個示例返回拒絕的Promise,達到鏈接的第二個函數參數.then().catch()

我期待開拓.catch()並記錄錯誤,但我還是想 錯誤是「未捕獲」,我能退貨嗎?

第一種模式應該符合要求。

+0

雖然注意,'err'沒有在任何一個例子中定義 – guest271314