我发现同步数据库查询生成mozIStorageStatementRow
而异步代码生成mozIStorageRow
。
我可以通过一个简单的 Shim 轻松解决这个问题。在同时使用同步和异步调用时,是否有一种更简洁(即比我的 shim 更简洁)的方式来传递数据库查询结果?
示例代码,从 a 开始mozIStorageStatement
(例如,通过调用createStatement()
):
//Sync Example:
myStorageStatement.executeStep();
var row = myStorageStatement.row;
var myNameColumn = row.name;
//Sync Shim Example:
myStorageStatement.executeStep();
var row = {
getResultByName: function (str) {
return myStorageStatement.row[str];
}
};
var myNameColumn = row.getResultByName("name");
//ASync Example:
myStorageStatement.executeAsync({
//...
handleResult: function (aResultSet) {
var row = aResultSet.getNextRow();
var myNameColumn = row.getResultByName("name");
}
});