只是要确认一下。
使用AngularJs假设这个Javascript代码:
$rootScope.myNeededBoolean = false;
$rootScope.$on('userHasJustBeenAuthenticated', function(){
if(!$rootScope.myNeededBoolean) {
$rootScope.myNeededBoolean = true;
//determinant assignment to myNeededBoolean so that the following
//piece of code will be executed once and only once.
pieceOfCodeToExecuteOnlyOnce();
}
});
用于在用户登录时触发一段代码。
假设此代码由两个不同的代码同时触发(例如使用$rootScope.$broadcast
),专注于同一事件:userHasJustBeenAuthenticated
。
Javascript是单线程AFAIK,我可以断言$rootScope.$on
将在100%的情况下顺序访问两次吗?
确实,我希望$rootScope.myNeededBoolean
具有决定性,以便pieceOfCodeToExecuteOnlyOnce
只执行一次。
答案 0 :(得分:3)
默认情况下,Javascript没有线程。所以代码块
if(!$rootScope.myNeededBoolean) {
$rootScope.myNeededBoolean = true;
//will execute only once
}
将在离开前完成执行。