pet*_*ter 9 javascript indexeddb
indexedDB有一个规范说您可以同步访问索引数据库,但尚未实现.
我只是想知道是否有办法让它手动同步,
我的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)
{
}
}
Run Code Online (Sandbox Code Playgroud)
那么你可以在那里放一些东西让它等到onsuccess方法被调用后再继续吗?
我想这样做的原因是上面的代码包含在这个方法中,
dojo.extend(esri.layers.ArcGISTiledMapServiceLayer, {
getTileUrl : function(level, row, col)
{
// blah
return url;
}
Run Code Online (Sandbox Code Playgroud)
所以它是一个ESRI图块层(它会将图块加载到我的网页上的地图上),并且该方法需要立即返回特定图块的网址.它将是一个加载图像的URL,如果它没有缓存在数据库中,或者这个,
data:image;base64,*BASE64DATA*
Run Code Online (Sandbox Code Playgroud)
其中BASE64DATA是以前缓存的数据库中的数据.
我之前使用的是localStorage,它同步工作,但是有5MB的限制,所以我想我会尝试使用indexedDB.
有一个更普遍的问题如何等待异步函数,您可以在其中找到答案: How to block on asynchronous functions in JavaScript
我还在Trial Tool中发现了一个很好的 waitFor 例程。
| 归档时间: |
|
| 查看次数: |
7122 次 |
| 最近记录: |