如何拥有一个可以返回价值或承诺的功能?

时间:2014-07-24 18:32:33

标签: javascript ajax angularjs promise

假设我想在对象已经在我的模型中时返回一个值,但如果不是,则返回端点服务的结果:

model.getDoohkyById = function( id ){
    if( this.data ) {
        if( this.data.length > 0) {
            for( var i =0; i < this.data.length; i++){
                if( this.data[i].id === id ){
                    //this returns a value
                    return this.data[i];
                }
            }
        }
    }

    // this returns a promise
    return this.service.getBy('id',id);
}

如何在promise的上下文中构造第一个返回值,以便我可以在没有错误object has no method 'then'的情况下执行此操作?

DoohkyModel.getDoohkyById(this.doohkyId).then( function(result){
      that.doohky = result.data;
});

1 个答案:

答案 0 :(得分:2)

您可以使用$q服务(doc here):

    model.getDoohkyById = function( id )
    {
       if( this.data ) {
            var deferred = $q.defer();
            if( this.data.length > 0) {
                for( var i =0; i < this.data.length; i++)
                {
                    if( this.data[i].id === id )
                    {
                        //this returns a value
                        deferred.resolve(this.data[i]);
                        break ;
                    }
                }
            }
            return deferred.promise;
        }

        // this returns a promise
        return this.service.getBy('id',id);
    }