我有服务IDataAccessService
,其中包含$resource
查询电话。
export interface IDataAccessService {
getUserResource(): ng.resource.IResourceClass<IUserResources>;
}
我在另一个服务类IDataAccessService
中使用IUserService
。
export interface IUserService {
getAll(): ng.IPromise<IUser[]>;
}
我编写函数IUserService.getAll
,它将返回Promise<IUser[]>
并运行一个查询,该数据来自服务器IDataAccessService.getUserResource
,当数据到达时我希望通过Promise发送数据。
getAll(): ng.IPromise<IUser[]> {
var usersResource = this.dataAccessService.getUserResource();
usersResource.query((users: Models.IUser) => {
//return data via Promise
});
//return promise
}
答案 0 :(得分:0)
让我们看看你的代码:
getAll(): ng.IPromise<IUser[]> {
var usersResource = this.dataAccessService.getUserResource();
usersResource.query((users: Models.IUser) => {
//return data via Promise
});
//return promise
}
首先你可能意味着users: Models.IUser[]
。基于此,最终代码应为:
getAll(): ng.IPromise<IUser[]> {
var usersResource = this.dataAccessService.getUserResource();
var def = $q.defer();
let usersPromise = usersResource.query((users: Models.IUser) => {
//return data via Promise
def.resolve(users);
});
//return promise
return def.promise;
}
在此处详细了解defer
:https://docs.angularjs.org/api/ng/service/ $ q