2014-05-09 56 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