javascript - AngularJS 应用请求设置同步问题~
迷茫
迷茫 2017-04-10 15:09:07
[JavaScript讨论组]

要求:整个应用需要用户登录之后才进入,所以我在app.run 的时候与服务器交互,判断是否登录,并设置一些用户信息,因 $http 都是异步的,导致返回的不及时,网上百度了一些方法,
大多数都是 $q 服务,现在问题是 主要是 app.run 只运行一次,用$q 该如何操作~ 求大神求解

javascriptapp.run(function($rootScope, $state, $stateParams, $http, $filter) {
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;

    // 用户登录判断以及所需信息
    $http.get(app.URL.login).
        success(function(data) {
            if (data.code > 0 && data.isLogin) {
                $rootScope.nowDate = {
                    year: parseInt($filter('date')(data.nowDate, 'yyyy'), 10),
                    month: parseInt($filter('date')(data.nowDate, 'M'), 10),
                    day: parseInt($filter('date')(data.nowDate, 'd'), 10)
                };
                $rootScope.userInfo = {
                    isLogin: data.isLogin,
                    userName: data.userName,
                    avatar: data.avatar
                };
            } else {
                $state.go('login');
            }
        }).
        error(function() {
            $state.go('login');
        });
});
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
高洛峰

谢邀。
如果是第一次进入页面的话,为什么不在后端判断下是否是登录的;或者直接说后端可以把一些信息打印到页面上,这些信息可以是是否是登录状态。登录状态这个肯定是后端判断的。

还有就是中间可能用户还在这个页面,但是中间过程中登录token失效了,这时候需要重新登录,可以是后端对于相应的接口中返回一个固定的错误信息,例如 noLogin。然后angular中有拦截器,可以再拦截器中加入判断,如果是响应的noLogin,那么久导航到login或者有弹窗也是可以的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号