handleResult вызывается несколько раз на executeAsync? - PullRequest
0 голосов
/ 05 мая 2011

После документа Storage на MDC я написал кое-что, чтобы прочитать историю и показать ее в текстовом поле:

var dbConnection = database.getDBConnection();

var getHistoryStatement = dbConnection.createStatement("SELECT destinationUrl FROM uploadHistory ORDER BY id DESC");

getHistoryStatement.executeAsync({
    handleResult: function(aResultSet){
        var newHistoryString = "";
        for (var row = aResultSet.getNextRow(); row; row = aResultSet.getNextRow()) {
            newHistoryString += row.getResultByName("destinationUrl") + "\n";
        }

        document.getElementById("historyText").value = newHistoryString;
    },

    handleError: function(aError){
    },

    handleCompletion: function(aReason){
    }
});

Однако это не удается, потому что handleResult вызывается дважды в разных потоках: один с первыми 3 результатами и один с остальными результатами. Я не могу найти ничего в документах об этом поведении, и Google ничего не показывает. Кто-нибудь знает об этом поведении или как заставить handleResult вызываться только один раз со всеми результатами?

Это работает на Firefox 4.

1 Ответ

3 голосов
/ 05 мая 2011

Я не думаю, что вы хотите сказать, что его вызывали в разных потоках; обратный вызов всегда вызывается в потоке, к которому был вызван executeAsync. handleResult можно вызывать более одного раза, и такое поведение задокументировано (хотя вы, возможно, не смотрели эту страницу).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...