有很多与(a)同步执行和承诺有关的stackoverflow问题,但是我没有找到答案。
想象一下我有以下东西:
var number = 0;
someAsyncFunctionWithCallback(function(){
number++;
});
// ^ execute the above multiple times
随着函数每次调用的执行时间变化,回调将在不同的时间被调用。因此,我想知道可变增量线的行为。在Java中,我可以将变量声明为synchronous
,以便将每个增量都考虑在内。使用上面的代码,数字的每个增量是否得到保证,或者不一定?
答案 0 :(得分:1)
只要您可以确定someAsyncFunctionWithCallback
的运行时间和运行频率,此方法就不会有问题。您只需要意识到以下事实:在任何给定点检查变量只会根据回调执行的次数反映其当前值。
答案 1 :(得分:1)
JavaScript 始终与自身同步。这不是真正的多线程,JS不支持或使用。
答案 2 :(得分:1)
稍后将以不确定的顺序调用每个回调function(){ number++;}
,以增加number
。唯一可以确保的是,N次回调执行将使变量number