从函数调用返回通用承诺

时间:2015-10-13 10:37:04

标签: angularjs typescript promise

我有服务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
    }

1 个答案:

答案 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;
    }

在此处详细了解deferhttps://docs.angularjs.org/api/ng/service/ $ q