今天我正在进行一些实际上有两次通话的服务电话。 但是我无法在服务中使用它。我的代码需要像这样:
angular.module('module')
.service('NotificationManager', function (TransactionService) {
// call get currentransactionid from TransactionService
TransactionService.GetPendingTransactionForUser().then(function(result){
// call isNewTransaction which needs the result from GetPendingTransactionForUser passed as a parameter
TransactionService.IsNewTransaction(result.id).then(function(result){
return result.IsNewTransaction
}
}
然后在控制器中,我想返回此函数的结果(IsNewTransaction)。我该如何正确实现?目前,当我在控制器中单独进行服务调用时,它可以正常工作,但这不是必需的,因为需要从许多控制器调用此代码。任何帮助将不胜感激。
答案 0 :(得分:1)
添加两个return语句,服务将返回使用IsNewTransaction
解决的承诺:
angular.module('module').service('NotificationManager', function (TransactionService) {
return TransactionService.GetPendingTransactionForUser().then(function(result) {
return TransactionService.IsNewTransaction(result.id).then(function(result) {
return result.IsNewTransaction;
});
});
});
或者,不是像这样级联调用:
angular.module('module').service('NotificationManager', function (TransactionService) {
return TransactionService.GetPendingTransactionForUser().then(function(result) {
return TransactionService.IsNewTransaction(result.id);
}).then(function(result) {
return result.IsNewTransaction;
});
});