【问题标题】:Return generic promise from function call从函数调用返回通用承诺
【发布时间】:2016-01-11 01:48:32
【问题描述】:

我有服务IDataAccessService 包装$resource 查询调用。

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

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

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

我编写函数IUserService.getAll,它将返回Promise&lt;IUser[]&gt;并运行一个查询,该查询使用IDataAccessService.getUserResource从服务器获取数据,当数据到达时,我想通过Promise发送数据。

    getAll(): ng.IPromise<IUser[]> {

        var usersResource = this.dataAccessService.getUserResource();

        usersResource.query((users: Models.IUser) => {
            //return data via Promise
        });

        //return promise
    }

【问题讨论】:

  • 能否请您写下您尝试过的内容以及输出或错误是什么,以澄清问题?

标签: angularjs typescript promise


【解决方案1】:

让我们看看你的代码:

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

【讨论】:

  • 谢谢,对不起,我是 Angular 的新手,来自 .net 世界,有时我很困惑。
猜你喜欢
  • 2019-04-15
  • 2017-04-05
  • 2016-10-24
  • 2016-06-15
  • 1970-01-01
  • 2018-09-12
  • 2017-05-26
  • 1970-01-01
相关资源
最近更新 更多