Angular JS 1.x-无法将$ rootScope变量传递给下一个函数

沙彦汗

我有一个简单的问题,我似乎无法破解。

在我调用下一个函数时,似乎没有分配$ rootScope中的变量,但这不是Promise(.then)的意义吗?

我的堆栈是AngularJS v1.6.4和NodeJS,但这是一个纯粹的Angular问题

我的代码段在下面放置console.log及其响应的位置。

mainApp.controller('navBarController', ['$scope', '$rootScope', '$http', function($scope, $rootScope, $http){

    var checkIfAuthenticated = function(){
        return $http.get('/api/isAuthenticated');
    };

    var getProfileID = function(){
        return $http.get('/session');
    };

    var getUser = function(profileID){
        console.log('This is the profileID when passed into getUser: ' + profileID); //this shows undefined
        return $http.get('/api/user', {params: {_id: profileID}})
    };

    checkIfAuthenticated()
    .then(function(res) {
        if(res.status==200){
            $rootScope.userLoggedIn = true;
        };
    })
    getProfileID()
    .then(function(res) {
        if($rootScope.userLoggedIn === true){
            $rootScope.profileID = res.data._id;
            console.log('This is the profileID when getProfileID is called: ' + $rootScope.profileID); //this shows the correct ID
        };
    })
    getUser($rootScope.profileID)
    .then(function(res) {
        if($rootScope.userLoggedIn === true){
            $rootScope.profilePic = res.data.user.profilePic;
        };
    });

}]);

如果有人可以解释发生了什么,将不胜感激。

谢谢

乔治

要将数据从一个承诺传递到另一个承诺,请将它们链接起来:

checkIfAuthenticated()
.then(function(res) {
    if(res.status==200){
        $rootScope.userLoggedIn = true;
        return getProfileID();
    } else {
        throw "Not Logged In";
    }
}).then(function(res) {        
    $rootScope.profileID = res.data._id;
    console.log('This is the profileID when getProfileID is called: '
                 + $rootScope.profileID); //this shows the correct ID
    return getUser($rootScope.profileID);    
}).then(function(res) {
    if($rootScope.userLoggedIn === true){
        $rootScope.profilePic = res.data.user.profilePic;
    };
});

由于调用.thenpromise方法将返回新的派生promise,因此很容易创建promise的链。可以创建任意长度的链,并且由于一个承诺可以用另一个承诺来解决(这将进一步推迟其解决方案),因此可以在链中的任何点暂停/推迟对承诺的解决。

有关更多信息,请参见

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

node.js请求模块,如何使用步骤将请求的URL主体传递给下一个函数

来自分类Dev

Node.js异步系列-将参数传递给下一个回调

来自分类Dev

JS按顺序执行函数,同时将下一个函数作为参数传递

来自分类Dev

将变量传递给下一个模板

来自分类Dev

无法使用Angular JS将表单字段数据携带到下一个HTML页面

来自分类Dev

Angular 2 firebase 如何将变量传递给另一个函数?

来自分类Dev

将参数传递给下一个函数的函数

来自分类Dev

Django的。如何将下一个变量传递给auth_views.login

来自分类Dev

如何将变量和 API 响应传递给下一个承诺 (.then)

来自分类Dev

Angular JS将数据传递给$ http一个全局错误处理程序

来自分类Dev

Angular JS将数据传递给$ http一个全局错误处理程序

来自分类Dev

将意向传递给下一个活动

来自分类Dev

将值传递给下一个viewController

来自分类Dev

将 jquery var 传递给下一个/其他函数

来自分类Dev

Angular JS-将ng-click $ index值传递给控制器函数,然后返回另一个视图

来自分类Dev

共享服务无法将数据传递给下一个组件

来自分类Dev

无法将 ListView 的信息传递给下一个 Activity Android

来自分类Dev

(iOS + Firebase) 无法将图像从 UITableViewCell 传递给下一个 ViewController

来自分类Dev

无法将数组传递给 AWS StepFunction 中的下一个任务

来自分类Dev

如何将参数传递给另一个带有 ionic 1 和 angular 1 的屏幕?

来自分类Dev

缓存来自异步函数的结果,并将其传递给Async.js中的下一个函数

来自分类Dev

缓存来自异步函数的结果,并将其传递给Async.js中的下一个函数

来自分类Dev

我想将两个对象传递给Angular JS中的一个变量

来自分类Dev

将PHP变量传递给存储在另一个js文件中的jquery ajax post函数

来自分类Dev

无法将表 td 值传递给 JS 函数变量

来自分类Dev

如何将Js函数数组传递给另一个Js函数?

来自分类Dev

将变量从一个 JS 函数传递到另一个函数

来自分类Dev

Angular 6 - 尝试将函数传递给另一个类中的函数

来自分类Dev

AWS步骤函数映射状态:将当前迭代的输出作为输入传递给下一个迭代

Related 相关文章

  1. 1

    node.js请求模块,如何使用步骤将请求的URL主体传递给下一个函数

  2. 2

    Node.js异步系列-将参数传递给下一个回调

  3. 3

    JS按顺序执行函数,同时将下一个函数作为参数传递

  4. 4

    将变量传递给下一个模板

  5. 5

    无法使用Angular JS将表单字段数据携带到下一个HTML页面

  6. 6

    Angular 2 firebase 如何将变量传递给另一个函数?

  7. 7

    将参数传递给下一个函数的函数

  8. 8

    Django的。如何将下一个变量传递给auth_views.login

  9. 9

    如何将变量和 API 响应传递给下一个承诺 (.then)

  10. 10

    Angular JS将数据传递给$ http一个全局错误处理程序

  11. 11

    Angular JS将数据传递给$ http一个全局错误处理程序

  12. 12

    将意向传递给下一个活动

  13. 13

    将值传递给下一个viewController

  14. 14

    将 jquery var 传递给下一个/其他函数

  15. 15

    Angular JS-将ng-click $ index值传递给控制器函数,然后返回另一个视图

  16. 16

    共享服务无法将数据传递给下一个组件

  17. 17

    无法将 ListView 的信息传递给下一个 Activity Android

  18. 18

    (iOS + Firebase) 无法将图像从 UITableViewCell 传递给下一个 ViewController

  19. 19

    无法将数组传递给 AWS StepFunction 中的下一个任务

  20. 20

    如何将参数传递给另一个带有 ionic 1 和 angular 1 的屏幕?

  21. 21

    缓存来自异步函数的结果,并将其传递给Async.js中的下一个函数

  22. 22

    缓存来自异步函数的结果,并将其传递给Async.js中的下一个函数

  23. 23

    我想将两个对象传递给Angular JS中的一个变量

  24. 24

    将PHP变量传递给存储在另一个js文件中的jquery ajax post函数

  25. 25

    无法将表 td 值传递给 JS 函数变量

  26. 26

    如何将Js函数数组传递给另一个Js函数?

  27. 27

    将变量从一个 JS 函数传递到另一个函数

  28. 28

    Angular 6 - 尝试将函数传递给另一个类中的函数

  29. 29

    AWS步骤函数映射状态:将当前迭代的输出作为输入传递给下一个迭代

热门标签

归档