嵌套的$ http.get函数

时间:2015-08-13 13:05:38

标签: javascript angularjs mean-stack

我正在构建一个MEAN堆栈应用程序,我需要返回一个登录用户的电子邮件地址,以便将其作为参数传递给$ http.get语句,以便返回显示的数据。

我目前正在尝试在工厂中执行此操作,这是我返回当前登录用户的端点;

$http.get('/api/users/me') 
          .then(function(result) {
            userId = result.data.email;
          });

此端点有效,如果我在该函数中的console.log,它将返回登录用户的电子邮件,如果我在console.log之外,则返回undefined。

我想知道是否可以嵌套,或使用.then或.success将原始的$ http.get中返回的电子邮件地址传递给第二个请求,这看起来像这样; < / p>

$http.get('/api/bets', {params: {"created_by": userId}});

对Angular来说很新,所以如果您对从何处开始使用解决方案有任何建议,那将会非常有用!

2 个答案:

答案 0 :(得分:3)

您可以在回调中返回另一个承诺,它将被链接:

$http.get('/api/users/me') 
      .then(function(result) {
        return $http.get('/api/bets', {params: {"created_by": result.data.email}});
      })
      .then(function(result){  
           //result of /api/bets 
      });

答案 1 :(得分:2)

通过从第一个处理程序中返回另一个$ http.get来链接promises。

$http.get('/api/users/me') 
          .then(function(result) {
            userId = result.data.email;

            // make the next call
            return $http.get('/api/bets', {params: {"created_by": userId}});
          }).then(function (result) {
            // result of last call available here
          });