Не могу понять, почему цикл запускается дважды - PullRequest
0 голосов
/ 26 февраля 2012

Кажется, это не просто, и не должно быть все так сложно, но через два дня я нахожусь в тупике.Я не могу понять, почему этот цикл выполняется дважды.

db = openDatabase("com.xyz.mobile.db", "", "The App Database", 5 * 1024 * 1024);

        db.transaction(function(tx) {
            tx.executeSql("SELECT * FROM somedata", [], function(tx, result) {
                c = (result.rows.length - 1); //result.rows.length = 2 there are only 2 records
                console.log("c = " + c); // outputs 1 in console
                for(var i = 0; i < result.rows.length; i++) {
                    console.log("i = " + i); 
                    console.log(result.rows.item(i)['description']);
                    if(i == c){
                        console.log("I will run twice just to make you pound on key board");
                        break;
                    } 
                } 
            }, null);
        });

Вот что я получаю в консоли Chrome:

c = 1
i = 0
2/30/2012 22:02:08
i = 1
2/30/2012 22:02:27
I will run twice just to make you pound on key board
c = 1
i = 0
2/30/2012 22:02:08
i = 1
2/30/2012 22:02:27
I will run twice just to make you pound on key board

Помоги мне, Оби Ван, твоя единственная надежда.

Ответы [ 2 ]

0 голосов
/ 13 апреля 2012

Убедитесь, что ваш скрипт находится в разделе

<head> </head>

, а не в

<body> </body>

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

0 голосов
/ 26 февраля 2012

c = 1 поэтому result.rows.length = 2 поэтому for(var i = 0; i < result.rows.length; i++) работает 2 раза, я думаю, вы имели в виду: for(var i = 0; i < c; i++)

если вы не спросите, почему обратный вызов запускается дважды, и в этом случае я бы пришел к выводу, что он вызывается дважды ...

и я бы сделал:

db = openDatabase("com.xyz.mobile.db", "", "The App Database", 5 * 1024 * 1024);
console.log('i am here at ' + new Date());
db.transaction(function(tx) {
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...