2017-07-24 237 views
-1

在下面的代碼,如果所述第一請求將失敗,並且第二請求給響應的CP具有都失敗,並在許成功響應。我只需要成功的迴應。呼叫同樣的承諾第二次返回兩個響應(第一呼叫和第二呼叫響應)

cp = getcp() // getcp returns promises 
cp.catch(ex => { 
    if (ex) { 
    cp = getcp() 
    cp.catch(ex => { 
     cp = {} 
    }) 
} else { 
    cp = {} 
} 
}) 

我試過了,解決但沒用。請幫助我僅獲得成功回覆。提前致謝。

+0

不要覆蓋的承諾對象! '返回'來自'then' /'catch'處理程序的新的承諾或價值。 – deceze

+0

@deceze你能請告訴我如何使用內抓 – aaviss

回答

0

你應該鏈看起來是這樣的:

getcp() 
    .catch(ex => { 
     if (ex) { 
      return getcp(); // return new promise which may get caught 
     } else { 
      return {}; // return "success" value 
     } 
    }) 
    .catch(() => ({})) // catch failure of second attempt 
    .then(res => console.log('result is', res)); // use final result 

你永遠不要覆蓋承諾對象,而不是你構建故障處理程序和返回成功值的函數鏈。

+0

新的承諾,我想這一點,仍然是CP給出了失敗和成功的響應 – aaviss

+0

沒有辦法,這個代碼給出了*兩個*響應。只有一個'console.log'只接收一個值。 – deceze

+0

res只給出成功響應。 CP給出了失敗和成功的迴應 – aaviss