我想在JS中写一个函数,在这个函数中,我将遍历索引数据库中的表,并获取表的上次修改的最大值,然后返回
function readData(){
var trans = '';
trans = idb.transaction(["tableName"],'readonly'); // Create the transaction
var request = trans.objectStore("tableName").openCursor();
request.onsuccess = function(e) {
var cursor = request.result || e.result;
if(cursor) {
// logic to and find maximum
} else {
return // max last modified
}
cursor.continue();
}
}IMP--既然onsuccess方法是异步的,我如何才能使其同步?这样,我的方法readData()才会在成功找到最大的最后修改记录时返回。如果需要,我可以同步调用此方法(readData())来获取2-3个表的最后修改记录。
发布于 2012-08-23 21:20:39
同步API仅在webworker中可用。所以这将是第一个要求。(据我所知,目前只有IE10支持此功能)
您可以提供的另一种方法是使用JS1.7并使用yield关键字。有关它的更多信息,请查看here
我建议使用当您达到最新值时调用的callbakck方法。
function readData(callback){
var trans = '';
trans = idb.transaction(["tableName"],'readonly'); //Create the transaction
var request = trans.objectStore("tableName").openCursor();
var maxKey;
request.onsuccess = function(e) {
var cursor = request.result || e.result;
if(cursor.value){
//logic to and find maximum
maxKey = cursor.primaryKey
cursor.continue();
}
}
trans.oncomplete = function(e) {
callback(maxKey);
}
} 发布于 2012-09-04 00:44:57
顶框IndexedDB接口为异步。异步不能是同步的。但您可以在单个事务中读取所有表。
https://stackoverflow.com/questions/12092083
复制相似问题