在javascript中,如果array.push()和array.shift()异步启动,数组是否会损坏?

在javascript中,如果array.push()和array.shift()异步启动,数组是否会损坏?,javascript,arrays,asynchronous,push,shift,Javascript,Arrays,Asynchronous,Push,Shift,在javascript中,如果array.push()和array.shift()异步启动,数组是否会损坏 我正在使用一个数组来管理对用户活动和在网页上花费的时间的跟踪。这些事件是异步创建的,并被推送到阵列上 数组的处理方式类似于队列。数组[0]事件通过HTTP POST发送到主机数据库进行后期处理。成功后,阵列将移动 由于array.push()和array.shift()是异步调用的,这是否有可能损坏数组?由于JavaScript是单线程的,因此不可能同时发生两个函数调用 记住,“异步”不能

在javascript中,如果array.push()和array.shift()异步启动,数组是否会损坏

我正在使用一个数组来管理对用户活动和在网页上花费的时间的跟踪。这些事件是异步创建的,并被推送到阵列上

数组的处理方式类似于队列。数组[0]事件通过HTTP POST发送到主机数据库进行后期处理。成功后,阵列将移动


由于array.push()和array.shift()是异步调用的,这是否有可能损坏数组?

由于JavaScript是单线程的,因此不可能同时发生两个函数调用

记住,“异步”不能与“并行”混淆

在JavaScript中,各种异步代码位在终止或移交给其他代码位之前以独占方式运行。这些都是用来驱动一切的部分

现在你可能会遇到这样的情况:你的代码假设某些东西不会改变,而其他一些代码会改变它,但这不是腐败本身,这只是错误的假设

<> P>编写JavaScript代码时的最大挑战不是无意的损坏,因为您可以从多线程的C++代码中获得运行,但是在排序过程中,如使您的操作以正确的顺序运行。这就是承诺和
async
函数非常有用的地方


如果您需要在
shift()
之前执行
push()
,则必须使用诸如承诺之类的工具来确保它们按正确的顺序执行。

您所说的“损坏”到底是什么意思?您的意思是什么?就像深度拷贝和浅拷贝一样,“异步”并不意味着“同时”,这在JS中是不可能的。我不知道什么是损坏的,但是。。。函数的顺序可能会把结果搞砸。考虑一个空数组。考虑在空数组上执行这两个操作。你
shift
首先什么也得不到。你按下
shift
键之后,你确实得到了一些东西。如果不确定地管理订单,可能会得到意外的结果。根据异步活动在每次
.push
之前所花的时间,它们可能会以不同的顺序进行。不,它不会损坏数据。