NoctisHsu
2/3/2017 - 3:56 AM

BaseServiceImmediate.ts

namespace NineYi.Mall.Services {

    export  interface IBaseServiceImmediate {
        CallPromiseAction<T>(func: ng.IPromise<T>): ng.IPromise<T>;
        CallHttpPromiseAction<T>(func: ng.IHttpPromise<T>): void;
    }

    export class BaseServiceImmediate implements IBaseServiceImmediate {
        static $inject = ['$q'];
        public $q: ng.IQService;

        constructor($q: ng.IQService) {
            this.$q = $q;
        }

        public CallPromiseAction<T>(func: ng.IPromise<T>): ng.IPromise<T> {
            let defer = this.$q.defer();
            func.then((res: T) => {
                defer.resolve(res);
            });
            return defer.promise;
        }


        public CallHttpPromiseAction<T>(func: ng.IHttpPromise<T>): ng.IPromise<ng.IHttpPromiseCallbackArg<T>> {
            let defer = this.$q.defer();
            func.success((res: ng.IHttpPromiseCallbackArg<T>) => {
                defer.resolve(res);
            }).error((res: ng.IHttpPromiseCallbackArg<T>) => {
                defer.reject(res);
            });
            return defer.promise;
        }
    }

    angular.module('NineYi.Mall.Services')
        .service('BaseServiceImmediate', BaseServiceImmediate);
}