在promise函数中使用api调用

时间:2017-10-17 14:12:50

标签: javascript es6-promise axios

我不完全理解承诺是如何运作的。我创建了一个执行使用promise的api调用的函数。

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

每当此函数触发时,我都可以获得我想要的数据。但是,每当发生错误时,错误都会显示在.then()调用中,而不是.catch()

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

我怎样才能确保,当我致电.catch()时,它会在那里显示我的错误,而不是.then()

2 个答案:

答案 0 :(得分:0)

你需要回复这样的承诺:

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

然后它应该正常工作(如果axios.post调用返回promise)。

答案 1 :(得分: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
  })
}