首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同步风ExecuteQuery

同步风ExecuteQuery
EN

Stack Overflow用户
提问于 2014-01-30 07:43:01
回答 1查看 1.5K关注 0票数 0

我使用Breeze承诺ExecuteQuery从DB中获得如下数据:

代码语言:javascript
复制
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?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-30 09:24:56

不是的。一旦一个函数是异步的,就没有真正的同步方法,但是您可以连锁承诺。即

代码语言:javascript
复制
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');
}

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21450502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档