AngularJS /这种情况绝对安全吗?

时间:2014-05-09 09:52:55

标签: javascript angularjs thread-safety

只是要确认一下。

使用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只执行一次。

1 个答案:

答案 0 :(得分:3)

默认情况下,Javascript没有线程。所以代码块

 if(!$rootScope.myNeededBoolean) {
    $rootScope.myNeededBoolean = true; 
    //will execute only once
 }

将在离开前完成执行。