Переменная анонимной функции JavaScript - PullRequest
0 голосов
/ 06 декабря 2011

Я работаю над приложением PhoneGap и у меня есть этот фрагмент кода в цикле

htmlR += "html code here";
tx.executeSql('SELECT Question,Grp from KnowSelf where Dimension = "'+result.Dimension+'"', [], function(tx,resultR){

    var leng = resultR.rows.length;
    for(var i = 0; i < leng; i++){
        var resultsR = resultR.rows.item(i);
        htmlR += '<li class="catsli">'+resultsR.Question+'</li>';
        htmlR += '<li class="line"><img class="line" src="iPhone3/Line.png" alt="line"/></li>';

    }

},errorCB);
htmlR += "continue html code here";

Моя проблема в том, что внутри тегов tx.executeSql(.... htmlR += li

естьне добавляя к внешнему htmlR.

1 Ответ

2 голосов
/ 06 декабря 2011

Я подозреваю, что executeSQL не вызывает обратный вызов немедленно, а скорее асинхронно , и поэтому вы не видите результаты сразу. Если это так, правильный способ справиться с этим - выполнить всю обработку, основанную на результатах в обратном вызове, а не после вызова executeSQL. Например, изменить:

// Do Something
doSomething();

// Do some SQL
executeSQL(..., function() {
   // ...deal with callback...
});

// Do something after SQL
doSomethingElse();

до

// Do Something
doSomething();

// Do some SQL
executeSQL(..., function() {
   // ...deal with callback...

    // Do something after SQL
    doSomethingElse();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...