异步分配JavaScript变量的风险

时间:2018-12-15 20:05:21

标签: javascript asynchronous callback synchronization

有很多与(a)同步执行和承诺有关的stackoverflow问题,但是我没有找到答案。

想象一下我有以下东西:

var number = 0;
someAsyncFunctionWithCallback(function(){
    number++;
});
// ^ execute the above multiple times

随着函数每次调用的执行时间变化,回调将在不同的时间被调用。因此,我想知道可变增量线的行为。在Java中,我可以将变量声明为synchronous,以便将每个增量都考虑在内。使用上面的代码,数字的每个增量是否得到保证,或者不一定?

3 个答案:

答案 0 :(得分:1)

只要您可以确定someAsyncFunctionWithCallback的运行时间和运行频率,此方法就不会有问题。您只需要意识到以下事实:在任何给定点检查变量只会根据回调执行的次数反映其当前值。

答案 1 :(得分:1)

JavaScript 始终与自身同步。这不是真正的多线程,JS不支持或使用。

答案 2 :(得分:1)

稍后将以不确定的顺序调用每个回调function(){ number++;},以增加number。唯一可以确保的是,N次回调执行将使变量number

增大N倍