如何在一行中执行多个动作?

时间:2014-09-30 07:24:28

标签: javascript breeze

在我的情况下,我有一个来自temphire(breeze)的存储库

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);
    }
});

现在

如何做到这一点

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

第一个动作返回查询以及之后执行

非常感谢

2 个答案:

答案 0 :(得分:0)

我认为您尝试的问题是return终止执行。如果你想做一些事情以及返回该功能,那么你需要在返回之前完成它。

另一方面,如果你真的需要返回值并且然后执行某些东西,那么你应该有调用函数的方法期望返回,调用函数来获得返回值,然后让 调用函数执行你想要执行的事情。如果该执行需要来自返回值的函数的一些数据,则返回带有返回值的信息,并将其传递给执行该函数的函数。

答案 1 :(得分:0)

使用

  

executeQueryLocally //这是syn

而不是

  

executeQuery //这是异步

executeQuery sync