2012-03-12 29 views
3

我正在嘗試編寫支持樹數據的Sencha Touch 2.0 WebSql代理。我從tomalex0的WebSql/Sqlite代理開始。 https://github.com/tomalex0WebSQL事務在控制檯中工作,而不是在代碼中

在修改我遇到了一個奇怪的問題,調試腳本:

(我使用Chrome 17.0.963.78米)

以下剪掉剛剛躍過。交易永遠不會發生!但是當我在上面或下面設置一個斷點時,我在控制檯中運行相同的代碼,它確實有效!

dbConn.transaction(function(tx){ 
    console.log(tx); 
    if (typeof callback == 'function') { 
     callback.call(scope || me, results, me); 
    } 
    tx.executeSql(sql, params, successcallback, errorcallback); 
}); 

藍色的日誌你可以看到,綠色的日誌來自成功處理程序。當執行查詢時,會出現上面完全相同的日誌(這是一個SELECT * FROM ...;所以當執行多次而不更改數據時,我期望得到相同的結果)

我發現當我添加代碼塊也運行到監視表達式。

Debug Example

回答

1

它不被跳過。它被預定,但沒有被直到很久以後執行,由於請求的異步特性:

http://ejohn.org/blog/how-javascript-timers-work/

由於正在同步執行的代碼,以使異步調用後,就會拖延通話,直到由於JavaScript的單一線程性,同步代碼已被執行。

+0

好的,這看起來像一個很好的解釋。但是當我繼續時,我從來沒有成功,也沒有錯誤回報。 (沒有任何錯誤可能會阻止代碼被執行) – VDP 2012-03-14 11:02:13

相關問題