2017-10-17 80 views
0

我不完全理解promise如何工作。我做了一個執行使用promise的api調用的函數。在promise函數中使用API​​調用

function getSomeData(email, password) { 
    axios.post('SomeURL/login', { 
    email: email, 
    password: password 
    }) 
} 

每當這個函數觸發我可以得到我想要的數據。但每當發生錯誤時的錯誤會將.then()通話中顯示出來,而隨後.catch()

getSomeData().then(data => { 
    console.log(data) 
}) 

我怎樣才能確保,當我打電話.catch()就會有顯示,而不是我的錯誤在.then()

+0

哪裏出現錯誤? – Bergi

回答

0

你需要回到這樣的承諾:

function getSomeData(email, password) { 
    return axios.post('SomeURL/login', { 
     email: email, 
     password: password 
    }) 
} 

那麼它應該是工作(如果axios.post調用返回的承諾)。

+0

即使我插入錯誤的電子郵件地址'{data:{...},status:200,statusText:「OK」,標題:{...},config:{...},...}(我從.then()返回它) –

+0

這聽起來像在處理你的請求的API中的錯誤。 –

+0

我真的很確定api的作品。在數據內部:{}它將返回一個錯誤數組,其中包含有關錯誤的詳細信息:( –

0

您可以使用if語句來處理業務邏輯錯誤。然後捕獲錯誤將處理服務器錯誤。

function getSomeData(email, password) { 

    return axios.post('SomeURL/login', { 
    email: email, 
    password: password 
    }) 
    .then(response => { 
    if (response.statusText === 'OK') { 
     // LOGIN SUCCESS 
     // Do something with the login result 
    } else { 
     // LOGIN FAILURE, but not server failure 
     // Redirect to login page, and give a message 
    } 
    }) 
    .catch(error => { 
    console.log(error) 
    // API is down 
    }) 
}