我结合2个承诺但是没有工作,在服务中我有2个方法,其中方法" UserService.getAuthenticatedUser()"获取当前用户信息,并且有一个" UserService.getAccountTypeData(idUser)",其中获取usertype信息,但要获得第二种方法我需要userID,所以基本上首先我调用& #34; UserService.getAuthenticatedUser()",获取id,然后调用" UserService.getAccountTypeData(idUser)",但无法正常工作。
function isAccount(accountName) {
UserService.getAuthenticatedUser()
.then(function (response) {
var userDetails = response.data;
});
UserService.getAccountTypeData(idUser)
.then(function (response) {
var userDetails = response.data;
return userDetails;
});
}
PS:我已经注入了服务......
答案 0 :(得分:2)
您可以通过返回.then()
函数中的值来链接您的承诺。
function isAccount(accountName) {
return UserService.getAuthenticatedUser(accountName) // pass in accountName argument?
.then(function(response) {
var userDetails = response.data;
return userDetails.Id; // user id value
})
.then(UserService.getAccountTypeData) // userDetails.Id gets passed to getAccounttypeData method
.then(function(response) {
var userDetails = response.data;
return userDetails;
});
}
// usage
isAccount('AccountA').then(function(userDetails) {
// do something with userDetails
});
答案 1 :(得分:0)
您正在处理异步调用,因此当您调用.then()
方法时,它会执行该函数并将回调连接到作为参数传递给{{1}的匿名函数}}。如果第二个依赖于第一个,你可以像这样嵌套它们......
then()