首页 > 解决方案 > Javascript 上的异步和等待函数

问题描述

我是 Javascript 的新手。我正在尝试练习从 api 获取数据。如果我在函数中添加 async 和 await 它会起作用。但是,如果我从函数中取出 async 并等待正常函数,它将返回“TypeError:无法读取属性'results'。

我可以知道为什么它必须在这个函数上添加一个 Async 和 await 吗?

这是代码: -

showMovieData()

async function showMovieData() {
  const api_key = '8c9718c0155061bbd9ae76ee62386c65';
  // /discover/movie?sort_by=popularity.desc

  var result = await axios.get(
    "https://api.themoviedb.org/3/discover/movie?api_key=8c9718c0155061bbd9ae76ee62386c65&sort_by=popularity.desc"
  )

  result = result.data.results;
  console.log(result)

标签: javascript

解决方案


首先也是最重要的:不要在公共论坛上共享密钥。

其次,您必须等待它的原因是因为您的函数是异步的。如果您不等待获取请求,您的代码将继续到下一行,无论它是否从 API 获得响应,这意味着如果它没有收到响应,则没有“数据”属性可言. 这是响应 API 在发回结果时为您设置的属性。它不像现代编程那样与 Javascript 相关。


推荐阅读