【问题标题】:push to array safely, how to? worry or not?安全推送到阵列,如何?担心与否?
【发布时间】:2012-08-28 16:00:40
【问题描述】:

我认为这可能是一个幼稚的问题。我经常发现我有多个 xhr 请求等待返回。我跟踪我在 javascript 数组中发出的请求。也就是说,当发出一个新请求时,我将它添加到数组中,然后当线程完成时,我将它从数组中删除。

在多线程操作系统中,我会担心线程交叉,但我知道 javascript 是单线程的。我应该担心数组是一致的吗?

很抱歉,如果有人提出并回答了这个问题。我看了看,没有找到数组安全推送的链接。

【问题讨论】:

    标签: javascript javascript-events


    【解决方案1】:

    不,您不必担心。正如你所说,JavaScript 是单线程的。

    【讨论】:

    • JavaScript 中是否有任何特殊的“锁定”区域?也就是说,我想有人告诉我 xhr 成功事件在任何其他异步事件中断它们之前完全运行。也就是说,如果发生了两个xhr请求的成功完成事件,这两个事件处理程序是否都保证在启动后不会被任务切换到运行?
    • @PeterKellner:是的,他们是。不,JavaScript 中没有锁定区域,因为它是单线程的,这没有任何意义。对于它的价值,对于(非线程)同步的其他问题,您将使用回调。
    • 抱歉,还是一头雾水。回调在任务切换之前完成吗?那就是回调开始的时候,另一个回调可以打断它吗?
    • @PeterKellner:不,如果这让你感到困惑,我很抱歉。 JavaScript 中没有并行任务切换。当一项任务完成后,另一项任务就可以开始了。否则,他们会等待。
    • 当您说任务时,是指函数调用吗?如果我有一个调用另一个函数的函数,该函数调用另一个函数,那么在任何函数调用自身时,是否可以调用任务切换到类似 xhr 成功函数的时间?
    猜你喜欢
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多