繁体   English   中英

从挂起的承诺中返回数据

[英]Return data from a pending promise

尝试将响应存储到变量中。 不知道我做错了什么。 任何帮助,将不胜感激。

async function fetchData(url) {
  const response = await fetch(url);

  if (!response.ok) {
    const message = `An error has occured: ${response.status}`;
    throw new Error(message);
  }

  const data = await response.json();
  return data;
}

async function getActivities() {
  let response = null;
  try {
    response = await fetchData("https://www.boredapi.com/api/activity");
    return response;
  } catch (error) {
    throw error;
  }
}

let data = getActivities();
console.log(data);

您将不得不等待从getActivities返回的承诺解决。 由于您将该函数标记为async ,它将返回一个解析为函数返回值的承诺。

例如:

getActivities()
    .then(data => console.log(data));

或者,将您的应用程序逻辑包装到一个async函数中,这将允许您使用await

async function main() {
  let data = await getActivities();
  console.log(data);
}
main();

一旦顶级等待成为一件事,将您的逻辑包装在主函数中将是不必要的。

使用您在函数中使用的相同逻辑, console.log()将在您的数据返回之前执行良好。

您可以使用.then()

getActivities().then(data => 
{ console.log(data);
});

或者如果你想使用另一个async/await

(async randomFunction() {
let data = await getActivities();
console.log(data);
}());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM