【发布时间】:2017-10-31 13:33:40
【问题描述】:
我通过 AngularJS 开发了许多具有相同签名的异步函数,即 app.Domain.GenericModel.EntityBase(我的通用模型) 这是一个示例:
get(resource: string): ng.IPromise<app.Domain.GenericModel.EntityBase[]> {
var self = this;
var deferred = self.qService.defer();
self.httpService.get(resource).then(function (result: any) {
deferred.resolve(result.data);
}, function (errors) {
self.exception = new app.Exceptions.Model.Exception(errors.status, errors.statusText);
deferred.reject(self.exception);
});
return deferred.promise;
}
然后我尝试使用链式 promise 调用一些与前一个类似的服务。所以,我收到了这个错误:“Type IPromise is not assignable to type IPromise, Type EntityBase is not assignable to type void”
var self = this;
var promise = self.$q.when();
promise = promise.then(() => {
return self.EcritureService.get(critureToSave);
}).then((compte: EntityBase) => {
return self.CompteService.getSingle(Number(data.compte));
}).then((EntityBase) => {
currentAccount.montantCpt = currentAccount.montantCpt + montant;
return self.CompteService.update(currentAccount:EntityBase);
});
我为这个困境搜索了很多,我所拥有的只是一种通过类型断言将我的函数返回到常见模式“IPromise”的不显眼的方法,该类型断言主要基于编译器的欺骗或类似的东西. 如果其他人有想法,我不理解这个技巧..无论它是否有效,他能否澄清它。
【问题讨论】:
标签: angularjs typescript angular-promise