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

标签 javascript node.js reactjs axios

我有一些 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 我认为是因为我得到的 Promise 而不仅仅是一个数字。我应该怎么办?

最佳答案

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
}

关于javascript - 在Promise中,response.status返回的是其他Promise而不是状态码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58997912/

相关文章:

javascript - meteor react 错误: Cannot read property '0' of undefined

javascript - ASP.NET 网络摄像头显示

javascript - 在 JavaScript 对象中添加子对象时获取 "Cannot set property ' 项的未定义"

angularjs - 引用错误: ArticleService is not defined

javascript - 带点符号的多重导出

reactjs - 在 React-Table 中导出为 PDF

javascript - 更改 Highcharts 时间序列中的数据周期?

javascript - 区分内部模型 `validate` 如果它正在创建或更新项目?

php - PHP 与 Node.js 中计算的不同 sha1 哈希值

javascript - React类实现中Uncaught Invariant Violation : Invalid hook call.问题