我有一些向服务器发出HTTP请求的Javascript代码,如下所示:

export const getUserByID = id => {
  return Axios
          .get(`${BaseURL}/usuarios/${id}`)
          .then(response => response.status)
}


我希望它从HTTP请求返回状态代码。问题是当我执行console.log(getUserByID(id))时,浏览器控制台会打印Promise而不是仅显示HTTP状态中的状态代码,并且我想将该状态代码与一个数字进行比较,该数字表示我要匹配的状态代码:

if (getUserByID(id) === 204) {
 // do stuff
}


当我执行console.log(getUserByID(id) === 204)时,我会一直得到false,我想因为我的承诺,我得到的不仅仅是数字。我该怎么办?

最佳答案

getUserByID()返回一个Promise,因此您需要等待它解决才能获取响应状态代码。例如这样:

getUserByID(id).then((status) => {

    if (status === 204) {
        // do stuff
    }
}).catch(console.error);


或者,如果您使用的是async函数,则可以使用await关键字:

const status = await getUserByID(id); // it will work only inside an `async` function
if (status && status === 204) {
    // do stuff
}

07-26 01:28