2014-09-30 92 views
0

在我来说,我有一个存储库这样从temphire(清风)如何在一行中执行多个操作?

define(['durandal/system'], function (system) { 

    var Repository = (function() { 

     var repository = function (entityManagerProvider, entityTypeName, resourceName, fetchStrategy) { 

      ......... 

      this.find = function (predicate) { 
       var query = breeze.EntityQuery 
        .from(resourceName) 
        .where(predicate); 

       return executeQuery(query); 
      }; 

      function executeQuery(query) { 
       return entityManagerProvider.manager() 
        .executeQuery(query.using(fetchStrategy || breeze.FetchStrategy.FromServer)) 
        .then(function (data) { return data.results; }); 
      } 

      ................ 

     }; 

     return repository; 
    })(); 

    return { 
     create: create, 
     getCtor: Repository 
    }; 

    function create(entityManagerProvider, entityTypeName, resourceName, fetchStrategy) { 
     return new Repository(entityManagerProvider, entityTypeName, resourceName, fetchStrategy); 
    } 
}); 

NOW

如何才能做到像一些本

repository.query(predicate).execute(); 

function query(predicate) { 
    return query = breeze.EntityQuery 
    .from(resourceName) 
    .where(predicate); 
}; 

function executeQuery(query) { 
    return entityManagerProvider.manager().executeQuery(query.using(fetchStrategy || breeze.FetchStrategy.FromServer)).then(function(data) { 
    return data.results; 
    }); 
} 

function execute() -- > 
    return executeQuery 

第一个动作返回的查询和执行后

非常感谢

+0

不知道我明白这个问题。正在尝试做什么? – 2014-10-01 02:42:33

+0

不知道这是你正在做的,但executeQuery()返回一个Q promise,所以处理data.results是这样的:executeQuery(someQuery).then(function(results){alert(results);}); – pawel 2014-10-02 06:52:39

回答

0

我认为你所尝试的问题是return终止执行。如果你想做某件事情并返回该功能,那么你需要在返回前做。

如果,另一方面,你真的需要返回值和然后执行的东西,那么你应该调用该函数期待回报的方法,调用函数来获取返回值,然后有调用函数执行你想执行的东西。如果该执行需要返回该值的函数中的某些数据,则返回该信息并返回该值,然后将其传递给执行该函数的函数。

+0

我想完全分开查询和结果。 因为rep.query(pred1).where(pred2).... exec()<-results mayby必须使用原型,但我不知道如何感谢 – 2014-09-30 07:53:22

0

使用

executeQueryLocally //此为顺的

代替的executeQuery //这是异步

executeQuery sync

+0

谢谢,但问题得到了它错误 – 2014-09-30 07:57:34