如何在 javascript 中管理变量的并发访问

Gae*_*ael 5 javascript concurrency google-chrome concatenation google-chrome-extension

我正在开发一个使用异步函数的 chrome 扩展,我有一个由函数设置的全局字符串变量,如下所示:

my_global_variable += a_string

我会知道是否有风险,如果我同时在另一个函数中读取 my_global_variable,我只会得到 a_string 的一部分。

换句话说,串联(更普遍的是一条指令)是原子操作吗?

Dav*_*rke 3

浏览器中的 JavaScript 是单线程的(除非使用 HTML5 Web Workers),因此不存在变量访问方面的争用。Chrome 中通过 Gears 插件提供了线程,但由于 HTML5功能(例如Web Workers)而不再支持线程。

  • @Gael JavaScript 中的异步函数使用单个线程。因此,对事件处理程序的回调,无论是来自 DOM 事件还是来自 AJAX 请求,仍然由 JavaScript 解释器串行处理,即在单个线程上处理。 (3认同)