2014-05-09 53 views
0

只需要确认。AngularJS /这种情况绝对安全吗?

使用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将被访问两次SEQUENTIALLY在100%的情况下?

的确,我想$rootScope.myNeededBoolean是决定因素,因此pieceOfCodeToExecuteOnlyOnce只执行一次。

回答

3

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

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

将在离开之前完成其执行。

+0

所以100%安全,谢谢;) – Mik378