如何在 JavaScript 变量中存储获取响应

Ama*_*ara 2 javascript fetch

抱歉这个基本问题。我正在尝试使用 fetch 从 api 获取数据,并希望将该响应存储到 javascript 变量中,但它没有像我预期的那样工作 我的代码-

async function fun() {
    var a = "initial";
    fetch('https://jsonplaceholder.typicode.com/todos/1')
        .then(res => res.json())
        .then(data => {
            a = data;
            console.log(a);
        })

    await console.log("Response => ", a);
}
Run Code Online (Sandbox Code Playgroud)

输出 - 响应 => 初始

这样做的正确方法是什么。

小智 5

await您可能需要在之前添加fetch

async function fun() {
  var a = "initial";
  await fetch('https://jsonplaceholder.typicode.com/todos/1')
    .then(res => res.json())
    .then(data => {
      a = data;
      console.log(a);
    })

  console.log("Response => ", a);
}
Run Code Online (Sandbox Code Playgroud)


And*_*rew 5

你所做的超出了你需要做的。您的 fetch 调用应该返回承诺。然后当您想要访问数据时,您可以await调用fun,并且可以读取响应

async function fun() {
  return fetch('https://jsonplaceholder.typicode.com/todos/1').then(res => res.json());
}

const data  = await fun();
Run Code Online (Sandbox Code Playgroud)

或者,如果你只想使用async/await你可以做类似的事情

const fun = async () => {
  const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
  return response.json()
}

await fun();
Run Code Online (Sandbox Code Playgroud)

  • 函数外部的等待仍然给出语法错误。 (2认同)