0
在我的firefox擴展中,我有一個帶有一些表的sqlite數據庫。使用executeAsync(),我更新了表格,插入了一些新的數據並選擇了一些值。選擇案例會導致一些問題。如何將結果返回給調用函數(開發一個Firefox擴展)
在handleCompletion()函數中,我可以將檢索到的數據從表中傳遞給另一個函數(並且可以提醒結果)。但我想將結果傳回給調用函數。我在網上搜索了我的問題的答案,但我找不到解決方案。
我發現:
retrieveData: function() {
var rows = new Array();
if (this.dbConn.connectionReady){
statement = this.dbConn.createAsyncStatement("SELECT * " +
"FROM 'domains' " +
";");
statement.executeAsync ({
handleResult: function(aResultSet) {
var i = 0;
for (let row = aResultSet.getNextRow(); row; row = aResultSet.getNextRow()) {
rows[i] = row;
++i;
}
},
handleError: function(anError) {
alert("error");
},
handleCompletion: function(aReason) {
if (aReason != Components.interfaces.mozIStorageStatementCallback.REASON_FINISHED) {
// something went wrong
alert("error2");
}
}
});
}
return rows;
}
此代碼不會返回預期的結果。該語句在該方法返回數組「行」後執行。所以,我的通話功能永遠不會收到表中的數據...
我該如何解決這個問題?有沒有像返回表的數據行超時?
非常感謝您的幫助!
謝謝你的解決方案。正是我需要的。我從來沒有在任何論壇上看到過這種可能性...... – kwonilchang 2013-02-12 20:29:49