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

标签 javascript angularjs thread-safety

只是为了确认。

假设此 Javascript 代码使用 AngularJs:

            $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 是单线程的,我可以断言 $rootScope.$on 在 100% 的情况下将被顺序访问两次吗?

确实,我希望 $rootScope.myNeededBoolean 具有决定性,以便 pieceOfCodeToExecuteOnlyOnce 仅执行一次。

最佳答案

Javascript默认没有线程。所以代码块

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

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

关于javascript - AngularJS/这种情况绝对安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23561602/

相关文章:

javascript - 使用 Angular 指令向 DOM 添加可切换按钮

javascript - HTML 输出的缓存

angularjs - 由于模块 'Firebase' 不可用,无法实例化模块 Firebase

c++ - 线程安全队列死锁

外部 js 文件中的 Asp.Net 脚本

javascript 为具有给定 URL 的 Java 小程序仅启动一个窗口

angularjs - 如何从根 Angular 对象获取 $rootElement

angularjs - 如何使用 angular-socket-io 库设置 socket.io 服务器?

multithreading - 为什么 haskell.org 上的聊天服务器示例是线程安全的?

c# - XElement 的添加操作是线程安全的吗?