【发布时间】:2012-03-02 11:07:49
【问题描述】:
indexedDB 有一个spec 表示可以同步访问一个索引数据库,但是还没有实现。
我只是想知道是否有办法让它手动同步,
我的 JavaScript 看起来像这样,
var trans = databaseAsync.transaction(["mapTile"], IDBTransaction.READ_WRITE);
var store = trans.objectStore("mapTile");
var keyRange = IDBKeyRange.bound(evt.data[0], evt.data[0]);
var cursorRequest = store.openCursor(keyRange);
// can you put some kind of wait in here?
cursorRequest.onsuccess = function(e)
{
var result = e.target.result;
if(!!result == false)
{
}
}
那么你能不能在里面放一些东西让它等到 onsuccess 方法被调用后再继续?
之所以要这样做,是因为上面的代码是包裹在这个方法里面的,
dojo.extend(esri.layers.ArcGISTiledMapServiceLayer, {
getTileUrl : function(level, row, col)
{
// blah
return url;
}
所以它是一个 ESRI 瓦片层(它将瓦片加载到我网页上的地图上),并且该方法需要立即返回特定瓦片的 url。如果图像尚未缓存在数据库中,它将是加载图像的 URL,或者是这个,
data:image;base64,*BASE64DATA*
其中 BASE64DATA 是数据库中的数据(如果之前已缓存)。
我以前为此使用 localStorage,它可以同步工作,但有 5MB 的限制,所以我想我会尝试使用 indexedDB。
【问题讨论】:
-
6 年 4 个月后...这个问题仍然有价值,正在寻找一个像样的更新答案!
标签: javascript indexeddb