javascript - 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)
解决方案
首先也是最重要的:不要在公共论坛上共享密钥。
其次,您必须等待它的原因是因为您的函数是异步的。如果您不等待获取请求,您的代码将继续到下一行,无论它是否从 API 获得响应,这意味着如果它没有收到响应,则没有“数据”属性可言. 这是响应 API 在发回结果时为您设置的属性。它不像现代编程那样与 Javascript 相关。
推荐阅读
- html - 使用 CSS 和 HTML,是否可以让用户单击某个按钮来更改不同元素的样式?
- spring - Spring外事务失败回滚内事务
- xamarin - 如何在 Xamarin Forms 中执行功能之前加载视图页面?
- .net - Azure Cosmos DB - 删除整个分区
- excel - excel结合if语句和stdev
- python - model_main.py 不适用于使用旧指南创建的自己的数据集
- c++ - 如何使用 OpenGL 和 C++ 加载多个纹理?
- laravel - Laravel Eloquent:保存数据的嵌套关系
- xml - 防止 IIS 6.2 中的 XML 缓存
- diff - 如何在 Perforce/P4V 中使用 010 编辑器比较文件