当前位置: 首页 > 知识库问答 >
问题:

为什么这个异步函数返回未定义的?[副本]

越源
2023-03-14

下面JavaScript代码的目的是从随机用户生成器获取数据,并将JSON结果打印到控制台中。在声明后调用函数时,它返回为“未定义”。

为什么这个异步函数返回为未定义,而不是将fetch方法的结果打印到控制台?

const getRandomUser = async () => {
  try {
    let res = await fetch("https://api.randomuser.me/?nat=US&results=1");
    let { results } = res.json();
    console.log(results);
  } catch (error) {
    console.error(error);
  }
};

getRandomUser();

共有2个答案

戚高洁
2023-03-14

您也有waitres.json(),因此在您的情况下,它应该是这样的:

const getRandomUser = async () => {
  try {
    let res = await fetch("https://api.randomuser.me/?nat=US&results=1");
    let { results } = await res.json(); // Notice the await
    console.log(results);
  } catch (error) {
    console.error(error);
  }
};

getRandomUser();
万俟浩
2023-03-14

. json返回一个promise对象,需要等待才能返回值。这返回

[
  {
    "gender": "male",
    "name": {
      "title": "Mr",
      "first": "Andrew",
      "last": "Alvarez"
    },
    "location": {
      "street": {
        "number": 6490,
        "name": "E North St"
      },
      "city": "El Cajon",
      "state": "Hawaii",
      "country": "United States",
      "postcode": 78991,
      "coordinates": {
        "latitude": "-66.7376",
        "longitude": "-3.0261"
      },
      "timezone": {
        "offset": "-1:00",
        "description": "Azores, Cape Verde Islands"
      }
    },
    "email": "andrew.alvarez@example.com",
    "login": {
      "uuid": "006a343c-98de-45f0-ba0f-fb053be9efb2",
      "username": "angrywolf977",
      "password": "nobody",
      "salt": "JH14v7c8",
      "md5": "8c69fb8a8d65dbbf3cbdb71679b44c9e",
      "sha1": "b03b94155eff0dac5b733d7398a68b2e3f0513b1",
      "sha256": "fb26ce1e4cc7f067c6da9208454a91bda94fc3403119ebfa491a9620ff25de53"
    },
    "dob": {
      "date": "1982-06-30T11:22:22.724Z",
      "age": 38
    },
    "registered": {
      "date": "2002-09-12T21:36:16.737Z",
      "age": 18
    },
    "phone": "(278)-599-6197",
    "cell": "(842)-913-4573",
    "id": {
      "name": "SSN",
      "value": "639-63-2310"
    },
    "picture": {
      "large": "https://randomuser.me/api/portraits/men/36.jpg",
      "medium": "https://randomuser.me/api/portraits/med/men/36.jpg",
      "thumbnail": "https://randomuser.me/api/portraits/thumb/men/36.jpg"
    },
    "nat": "US"
  }
]
const getRandomUser = async () => {
  try {
    let res = await fetch("https://api.randomuser.me/?nat=US&results=1");
    let { results } = await res.json();
    console.log(results);
  } catch (error) {
    console.error(error);
  }
};

getRandomUser();
 类似资料:
  • 我真的需要温习一下我的异步等待和promise。我想要一些建议。 我正在对firebase firestore进行异步函数调用。函数应根据单个输入参数返回字符串。 该功能适用于1-1用户聊天。该功能是创建聊天/查找现有聊天,并返回其ID。 现在,我得到的作为返回值的和不知道为什么。除了返回之外,该函数还能正常工作。 我有两个功能。一个是React类组件生命周期方法,另一个是我的firebase异步

  • 我找不到这个职位的申请书http://127.0.0.1:3001/users?name=Slava. 服务器响应“需要名称”。方法getUsers正常工作。数据库工作正常,服务器。js也能工作。我在这里寻找类似的答案,但没有合适的答案。有一些非常古老的答案,但它们并不相关。 这是一项请求:http://127.0.0.1:3001/users?name=bob (我用邮递员送信)

  • 我在chrome控制台中写了这样的表达式: 它返回:

  • 问题内容: 我试图制作一个延迟X毫秒执行异步函数的函数。 为了演示的目的,以下是异步函数,该函数采用URL: 目的 我在这里的目标是要有一个函数,它将接受X 的参数,然后每隔X ms调用一次,直到不再有其他参数为止。 基本上,我希望每次调用都用X ms分隔。 例如,假设我连续打电话20次。通常,这20个呼叫将立即进行。我想要的是确保20个呼叫之间都存在Xms的延迟。 暂定 解决这个问题的想法是建立

  • 问题内容: 我的代码: 当我尝试运行这样的东西时: 我越来越: 但为什么? 我的主要目标是将令牌(从令牌中返回承诺)转换为变量。然后才执行一些操作。 问题答案: 只要其结果尚未解决,promise将始终记录未决。无论promise状态如何(已解决或仍处于待处理状态),您都必须调用promise来捕获结果: 这是为什么? 承诺只是向前的方向;您只能解决一次。a的解析值传递给其或方法。 根据Promi