2012-11-08 47 views
0

我想在for循環中運行事務。我的代碼是: -for循環中的事務

for(var i=0;i<len;i++){ 
     // some code 

     alert('before transaction'); 

     var db = window.openDatabase("Database", "1.0", "Pin Point", 200000); 
     db.transaction(fetchSubList, errorLists); 

     alert('after transaction'); 
    } 


function fetchSubList(tx) { 
    tx.executeSql('some QUERY', [], fetchSubListSuccess, errorLists); 
    } 


function fetchSubListSuccess(tx, results) { 
    alert("fetchSubListSuccess()..."); 

    // some code 
} 

但問題是該警示後(交易前)我直接拿到警報(交易後),只有在for循環之後,結束交易開始....

我跟着this鏈接解決,但我仍然無法弄清楚....

+0

它是異步的 - 你還期望什麼? – Bergi

+0

我不認爲你應該在同一個for循環中打開許多數據庫 – Bergi

+0

'db.transaction'採用'successCallback'參數,在那裏執行'after transaction'警報。 – Barmar

回答

1

這是不可能的...我們需要重構代碼,使代碼如下所示: -

db.transaction(function(tx) 
    { 

     // some value 
     var loop_limit = 10 

     for(var i=0; i<loop_limit;i++){ // ITERATE HERE 
     tx.executeSql(Statement, [],Sucess, error); 
     } 

    });