2015-10-13 160 views
0

我有服务IDataAccessService它包装$resource查询调用。函数调用返回通用承诺

export interface IDataAccessService { 
    getUserResource(): ng.resource.IResourceClass<IUserResources>; 
} 

我在另一个服务类IUserService使用IDataAccessService

export interface IUserService { 
    getAll(): ng.IPromise<IUser[]>; 
} 

我写功能IUserService.getAll,这将返回Promise<IUser[]>并运行,从服务器IDataAccessService.getUserResource,当数据到达我想通过无极发送的数据获取数据的查询。

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

+0

谢谢,对不起,我是角族的新手,来自.net世界,有时我很迷惑。 –