我正在构建一个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来说很新,所以如果您对从何处开始使用解决方案有任何建议,那将会非常有用!
答案 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
});