我想一个接一个地执行一组 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/