使用javascript异步/等待语法时出现奇怪错误

使用javascript异步/等待语法时出现奇怪错误,javascript,vue.js,async-await,Javascript,Vue.js,Async Await,我试图从randomuser api中获取一个随机用户。代码来自我的vue前端 // api response { info: { // ommited }, results: [ {//random user data} ] } // this works async get_random_user() { const url = "https://randomuser.me/api/"; const res = await fetch(u

我试图从randomuser api中获取一个随机用户。代码来自我的vue前端

// api response
{ info: { // ommited }, results: [ {//random user data} ] }

// this works
async get_random_user() {
        const url = "https://randomuser.me/api/";
        const res = await fetch(url);
        const json_data = await res.json();
        const result = json_data.results[0];
        return result; 
    }

// this throws Uncaught (in promise) TypeError: Cannot read property '0' of undefined
async get_random_user() {
        const url = "https://randomuser.me/api/";
        const res = await fetch(url);
        const result = await res.json().results[0];
        return result; 
    }
为什么第二个函数不起作用? 谢谢

您直接访问结果数据(可能尚未确定/生成),而不是等待res.json()完成处理

编辑

目前还不能确定res.json()是否会产生任何数据,或者是否会有任何正确的响应。因此,访问数据还不合理

等待结果[0]时被调用 它不会在res.json()上被调用

简单地说,您实际做的是

results = res.json();
const result = await results[0];

因此,在这个

等待
期望得到一个承诺的过程中有两个逻辑错误
json()
返回这样一个承诺,但是
json()。results
只是一个
对象(甚至在开始时还没有定义)。这就是为什么
await
在该结构上不起作用的原因。

检查res.json().results是否不是空数组

const result = (await res.json()).results.[0];

如果将(wait res.json)括在括号中会怎么样?我现在就知道了。我正在用js async/await语法完成我的小步骤:)谢谢,我现在就知道了<代码>常量结果=(wait res.json()).results。[0]确实有效。
const result = (await res.json()).results.[0];