在 Promise 中,response.status 返回其他 Promise,而不是状态代码



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

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()返回一个承诺,因此您需要等待它解析才能获得响应状态代码。例如像这样:

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
}

最新更新