首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Javascipt中返回response.data not Promise结果

在Javascipt中返回response.data not Promise结果
EN

Stack Overflow用户
提问于 2021-09-03 02:49:58
回答 2查看 52关注 0票数 1

我正在尝试使用axios来处理API请求。我的代码如下所示。

代码语言:javascript
复制
  const trigger = async () => {
    for (const [key, value] of Object.entries(data)) {
      if (value.name == source){
        return await axios.get("http://localhost:8000/api/"+value.someid).then(
          (response) => response.data
        );
      }
    }
  }
  
  console.log(trigger())

在这里,我正在尝试访问某个id的端点。我在console.log中得到了承诺的结果。我想我应该得到response.data,而不是整个承诺。为什么会这样呢?

编辑

仍然可以通过以下代码获得完整的承诺:(

代码语言:javascript
复制
  const trigger = async () => {
    for (const [key, value] of Object.entries(data)) {
      if (value.name == source){
        const response = await axios.get("http://localhost:8000/api/"+value.someid);
        return response.data;
      }
    }
  }
  console.log(trigger())
EN

回答 2

Stack Overflow用户

发布于 2021-09-03 03:55:58

在您的问题中,您在没有使用await关键字的情况下注销了触发器函数,因此console.log(trigger())的预期输出将是一个承诺。

解决方案

您将需要等待触发器函数调用,但为了使用await调用,您需要在异步函数中使用它,因为顶级await尚未包装在异步函数中,supported.you将不得不将调用包装在异步函数中并使用await来解析promise。

检查下面的代码,我使用了一个Starwars API来模拟这个问题。

代码语言:javascript
复制
const trigger = async () => {
let response;
for (const [key, value] of Object.entries([1, 2, 3, 4, 5])) {
  if (value === 2) {
    console.log('passed');
    response = await axios.get(`https://swapi.dev/api/people/${value}`);
  }
 }
 return response;
};
const getData = async () => {
  const response = await trigger();
  console.log(response);
};

here是堆栈闪电战中的示例react代码

票数 2
EN

Stack Overflow用户

发布于 2021-09-03 02:52:40

您需要使用await trigger()或使用.then来等待Promise解析。另外,我建议使用async/await或Promise.then(),不要将它们组合在一起:

代码语言:javascript
复制
const response =  await axios.get("http://localhost:8000/api/"+value.someid);
return response.data;

代码语言:javascript
复制
return axios.get("http://localhost:8000/api/"+value.someid).then(
  (response) => response.data
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69038954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档