javascript - Q.all 用于解决一系列 promise

标签 javascript promise breeze q

我想一个接一个地执行一组 Breeze 查询。我正在使用 Q.all 在所有查询完成执行后执行操作。

var promises = [];
promises.push(datacontext.breezeQuery(config.breezeEntity.Product));
promises.push(datacontext.breezeQuery(config.breezeEntity.Client));

上面提到的breezeQuery函数返回多个 promise ,我不希望在第一个查询的所有 promise 都得到解决之前执行第二个查询。但我发现在使用 Q.all(promises) 时,当查询 1 的第一个 promise 得到解决时,第二个查询开始执行。

如何确保第二个查询在第一个查询的所有 promise (Promise1 和 Promise2)得到解决之前不会开始执行。

dc.breezeQuery = function(entity){
  return Promise1().then(function(){
    return Promise2().then(function(){
    });
  });
};

最佳答案

听起来您有一组想要按顺序执行的查询。

试试这个:

var queries = ...,        // an array of breeze EntityQuery objects
    entityManager = ...,  // a breeze EntityManager
    promise = Q.resolve();

// chain the queries together.
queries.forEach(function(query) {
    promise = promise.then(function() { return entityManager.executeQuery(query); });
});

promise.then(function() { console.log('all queries executed!'); });

关于javascript - Q.all 用于解决一系列 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413446/

相关文章:

javascript - 如何显示删除按钮并删除上传的文件?

javascript - javascript 测量转换功能出现问题。 "If ... else if... else"

javascript - 根据classname查找TD中具有特定值的TR的数量

javascript - 如何在用户开始滚动内容时应用滚动动画

javascript - 在所有 promise 之后调用函数

javascript - angularjs $q 按顺序运行多个 Promise

javascript - Breeze - 获取实体数组的所有导航属性

javascript - Javascript "Promises"和函数式编程的 "Task"有什么区别?

asp.net-mvc - Upshot.js 的当前状态

breeze - 在 BeforeSaveEntity 中使用 this.Context