关于MDC的Storage文档,我写了一些东西来阅读一些历史记录并在文本框中显示:
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在不同的线程上被调用两次:一个具有前三个结果,另一个具有其余结果。我在the docs中找不到有关此行为的任何内容,谷歌也没有发现任何内容。任何人都知道这种行为或如何让handleResult只被调用一次所有结果?
这是在Firefox 4上运行。
答案 0 :(得分:3)
我不认为你的意思是说它是在不同的线程上调用的;始终在调用executeAsync
的线程上调用回调。 handleResult
可以被多次调用,that behavior is documented(尽管您可能没有看过该页面)。