Json fetch returning elements in random order(JSON以随机顺序获取返回的元素)
问题描述
我在FETCH请求时遇到了问题,问题是由于某种原因,它以随机顺序返回元素。函数如下:
function create_post_div(element, isLogged, currentUser, isProfile) {
console.log(element.id);
fetch(`likes/${element.id}`)
.then((response) => response.json())
.then((like_element) => {
console.log(like_element.user_liked, element.id);
});
}
为简单起见,我没有放入整个函数,但是可以通过控制台日志检测到错误。第一个控制台日志应返回整数的element.id,第二个控制台日志应返回布尔值和相同的element.id的like_element.user_like。
必须为从另一个函数(假设列表[1,2,3])接收的每个元素运行create_post_div函数。当我运行函数时,第一个console.log以正确的顺序返回数字,但是FETCH中的console.log随机返回它们。我注意到的另一件事是,不是控制台,而是类似于:1
true, 1
2
false, 2
3
true, 3
日志如下:
1
2
3
false, 2
true, 3
true, 1
它将首先记录所有的ID,然后使用ID记录点赞。同样,第一个日志中的ID始终是有序的,而第二个日志中的ID始终是无序的。
推荐答案
当您使用Fetch时,您将创建一个承诺,该操作将需要一段未定义的时间才能完成。而且Javascript不会等待承诺完成,它会一直运行,完成您已经编写的所有其他内容。
一旦提取操作完成,您放在.then
中的代码就会被执行,这就是为什么它被称为异步代码,因为它是在一段未定义的时间之后执行的。
而不是像建议的那样强制代码与异步/等待同步运行,而不是像我建议的那样,重新连接您的大脑以理解和接受此模式。除非这在设计上是绝对必要的,但这应该是非常罕见的情况。
这篇关于JSON以随机顺序获取返回的元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:JSON以随机顺序获取返回的元素


基础教程推荐
- 响应更改 div 大小保持纵横比 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 动态更新多个选择框 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01