在 javascript 中,如果 array.push() 和 array.shift() 异步触发,数组会被破坏吗?

Bru*_*uce -1 javascript arrays asynchronous push shift

在 javascript 中,如果 array.push() 和 array.shift() 异步触发,数组会被破坏吗?

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

数组像队列一样处理。array[0] 事件通过 HTTP POST 发送到主机数据库进行后期处理。成功时,数组被移动。

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

tad*_*man 5

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

请记住,不要将“异步”与“并行”混淆。

在 JavaScript 中,各种异步代码位在它们终止或移交给其他代码位之前专门运行。这是用于驱动一切的JavaScript 事件循环的所有部分。

现在,您最终可能会遇到这样一种情况:您的代码假设某些东西不会更改,而其他一些代码会更改它,但这本身并不是腐败,而只是做出错误的假设。

编写 JavaScript 代码时的最大挑战不是意外损坏,因为您可能会遇到偏离轨道的多线程 C++ 代码,而是排序,例如让您的操作以正确的顺序运行。这就是 Promise 和async函数非常有用的地方。

如果你需要在push()之前发生,shift()你必须使用像 Promises 这样的工具来确保它们以正确的顺序发生。