组合angularjs中的2个承诺
Combining 2 promises in angularjs
我组合了两个承诺,但不起作用,在一个服务中,我有两个方法,其中方法"UserService.getAuthenticatedUser()"获得当前用户信息,然后有一个"UserService.getAccountTypeData(idUser)",其中获得用户类型信息,但要获得第二个方法,我需要用户ID,所以基本上首先我调用"UserService.jetAuthenticateduser()",获取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;
});
}
附言:我已经注入了服务。。。
您可以通过返回.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
});
您正在处理异步调用,因此当您调用.then()
方法时,它将执行该函数,并将回调连接到作为参数传递给then()
的匿名函数。如果第二个依赖于第一个,你可以这样嵌套它们。。。
function isAccount(accountName) {
UserService.getAuthenticatedUser()
.then(function (response) {
var userDetails = response.data;
UserService.getAccountTypeData(idUser)
.then(function (response) {
var userDetails = response.data;
return userDetails;
});
});
}
相关文章:
- 一个承诺换多个承诺-并发问题
- 两个函数之间的角度承诺
- Javascript.同步运行多个承诺
- 承诺不等到下个就解决
- 承诺,如果第一个失败,则返回第二个承诺结果
- 如何在两个连续的角度服务呼叫期间中止/取消第一个呼叫的承诺
- 如何管理多个承诺
- 如何正确从承诺返回多个值
- 用Angularjs返回两个承诺,How To Chain So UI有$scope
- 编写一个使用传递两个参数的回调的承诺
- 具有JavaScript承诺的多个函数
- React Native Fetch:第二个承诺挂起
- 在后面的链接中使用第一个承诺的价值
- 在节点中,使用Q,使两个函数并行工作,但只等待第一个函数实现其承诺
- 进行多个 http 调用并使用承诺合并结果
- 在AngularUI路由器中访问多个承诺数据
- 如何在节点中使用承诺一次并行异步多个请求
- 如何从多个承诺中返回承诺
- Node.js Q承诺多个参数
- Parse承诺多个httpRequest云代码