📜  javascript async await 返回未定义 - Javascript (1)

📅  最后修改于: 2023-12-03 15:16:04.602000             🧑  作者: Mango

JavaScript Async Await 返回未定义

在使用 async await 来处理异步函数时,有时候会遇到函数返回值为 undefined 的情况,这可能是因为函数本身的问题或异步操作未正确完成而导致的。

函数未正确返回值

如果使用 async await 时出现返回值为 undefined 的情况,首先需要确保被调用的异步函数已经本身正常返回结果。可以使用 console.log() 或调试工具检查异步函数的返回值。例如:

async function getData() {
  let result = await fetch('https://jsonplaceholder.typicode.com/todos/1');
  return result.json();
}

let data = getData();
console.log(data); // undefined

这时候在控制台输出的 data 将会是 undefined,因为在调用 getData() 函数的时候,由于该函数返回一个 Promise 对象,所以 data 只是一个 Promise 对象而没有真正的取到异步操作的结果。要正确的使用异步函数的结果,可以使用 await 来等待异步操作:

async function getData() {
  let result = await fetch('https://jsonplaceholder.typicode.com/todos/1');
  return result.json();
}

(async function() {
  let data = await getData();
  console.log(data); // {userId: 1, id: 1, title: "delectus aut autem", completed: false}
})();

这样就可以正确的输出数据了。

异步操作未正确完成

如果异步函数本身正常返回结果,但在使用 await 等待异步操作时出现了问题导致返回 undefined,这可能是异步操作未正确完成导致的。可以使用 try-catch 语句来捕捉错误并输出详细信息:

async function getData() {
  try {
    let result = await fetch('https://jsonplaceholder.typicode.com/todos/1');
    return result.json();
  } catch (error) {
    console.error(error);
  }
}

(async function() {
  let data = await getData();
  console.log(data); // {userId: 1, id: 1, title: "delectus aut autem", completed: false}
})();

如果异步操作中存在错误,将会打印错误信息,否则将会正确输出数据。

通过以上方式,我们可以正确处理 async await 返回值为 undefined 的问题。