我使用Breeze承诺ExecuteQuery从DB中获得如下数据:
var getdata = function(){
var manager = new breeze.EntityManager(serviceName);
var query = new EntityQuery().from('MyTable');
manager.executeQuery(query)
.then(function(data){
//line1
console.log('success');
});
//line2
console.log('end');
}是否有任何方法使此函数同步:在完成line2 (或查询失败)之前不执行line1?
谢谢
发布于 2014-01-30 09:24:56
不是的。一旦一个函数是异步的,就没有真正的同步方法,但是您可以连锁承诺。即
var getdata = function(){
var manager = new breeze.EntityManager(serviceName);
var query = new EntityQuery().from('MyTable');
manager.executeQuery(query).then(doThis).then(doThat);
}
function doThis(data) {
console.log('success');
}
function doThat() {
console.log('end');
}或
var getdata = function() {
var manager = new breeze.EntityManager(serviceName);
var query = new EntityQuery().from('MyTable');
manager.executeQuery(query).then(function(data) {
console.log('success');
}).then(function() {
console.log('end');
}或者您可能想考虑让您的getData函数本身返回一个承诺。您可以在这里阅读更多关于这一点的信息:https://github.com/kriskowal/q
https://stackoverflow.com/questions/21450502
复制相似问题