2017-10-17 3 views
0

約束の仕組みを完全に理解していません。約束を使ったAPIコールを実行する関数を作った。promise関数でのAPI呼び出しの使用

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

この機能が起動するたびに、私は必要なデータを取得できます。エラーが発生するたびしかし、エラーがどのように私は.catch()を呼び出すとき、それはそこに私のエラーを示し代わりに.then()

+0

どこにエラーが表示されますか? – Bergi

答えて

0
でだろう、ということを確認することができます .catch()

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

いうし.then()コール内で表示されます

次のような約束を返す必要があります。

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

を(axios.postコールが戻ると約束するならば)それは働くべきです。

+0

これは、間違ったメールアドレス '{data:{...}、status:200、statusText:" OK "、ヘッダ:{...}、config:{...}、...}'を返しても返されます私はそれを元に戻します。)() –

+0

あなたのリクエストを処理しているAPIのエラーのようです。 –

+0

私は本当にapiが動作することを確信しています。データ内では:{}は何がうまくいかなかったのかに関する詳細を含むエラー配列を返します:( –

0

ifステートメントを使用して、ビジネスロジックエラーを処理できます。その後、catchエラーはサーバーエラーを処理します。

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 
    }) 
} 
関連する問題