Транзакция WebSQL работает в консоли, а не в коде - PullRequest
3 голосов
/ 12 марта 2012

Я пытаюсь написать прокси-сервер Sencha Touch 2.0 WebSql, который поддерживает древовидные данные.Я начал с прокси-сервера Tomalex0 WebSql / Sqlite.https://github.com/tomalex0

При изменении скрипта я столкнулся со странной проблемой отладки:

(я использую Chrome 17.0.963.78 m)

Следующий отсканированный только что получилнад.Сделка никогда не состоится!Но когда я устанавливаю точку останова выше или ниже и запускаю один и тот же код в консоли, он работает!

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 Ответ

1 голос
/ 13 марта 2012

Это не пропускается. Это запланировано, но не выполняется намного позже из-за асинхронного характера запроса:

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

Поскольку код выполняется синхронно для выполнения асинхронного вызова, он будет задерживать вызов до тех пор, пока синхронный код не будет выполнен из-за единственной многопоточности javascript.

...