2014-01-30 27 views
0

我得到的數據形成DB這樣使用微風承諾ExecuteQuery的同步微風的executeQuery

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

有沒有什麼辦法讓這個功能同步:不執行2號線,直到行1完成(或查詢失敗)?

感謝

回答

2

號一旦一個功能是異步有使同步沒有真正的方法,但你可以鏈的承諾。即

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

+0

清晰和乾淨的答案,謝謝。 – dafriskymonkey