2012-02-09 20 views
6

DizinlenmişDB'nin, bir dizinli veritabanına senkronize erişebildiğinizi söyleyen bir spec vardır, ancak henüz uygulanmadı.DizinlenmişDB'ye nasıl senkronize olarak erişebilirim?

elle senkron yapmak için bir yol olup olmadığını sadece merak,

JavaScript'im şöyle

,

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) 
    { 
    } 
} 

Yani onu onSuccess kadar beklemek yapmak için oraya bir şey koyabilirsiniz devam etmeden önce yöntem çağrıldı?

bu yukarıda bu yöntem içinde sarılır koddur yapmak istiyorum sebebi,

dojo.extend(esri.layers.ArcGISTiledMapServiceLayer, { 
     getTileUrl : function(level, row, col) 
     { 
      // blah 
      return url; 
     } 

Yani, (benim web sayfasında bir harita üzerine fayans yükleyecektir) bir ESRI kiremit tabakasıdır ve bu yöntemin belirli bir karo için doğrudan URL'yi geri göndermesi gerekir. Zaten veritabanında önbelleğe veya bu değilse görüntüyü yüklemek için bir URL olacak, ya daha önce önbelleğe eğer BASE64DATA veritabanından verileri

data:image;base64,*BASE64DATA* 

.

Daha önce bunun için localStorage kullanıyordum. Bu, eşzamanlı olarak çalışıyor ancak 5 MB'lık bir sınırı var, bu yüzden indexedDB ile deneylerim olacağını düşündüm.

cevap

0

IE10 senkron api destekler, ancak IndexedDB senkronizasyon api sadece bir web işçinin içeride kullanılabilir. Kullanıcı arayüzünde çalışıyorsanız, async API'sini kullanmanız gerekir.

Async API'sı ile çalışmanın en kolay yolu vaatler.

+0

Lütfen [gönderilerinize imza veya slogan eklemeyin] (http://stackoverflow.com/faq#signatures). – meagar

2

IndexedDB Senkronizasyon API IndexedDB specification riskli bir parçası olarak işaretlendi ve bu artışın uygulamalarda potansiyel eksikliği kaldırılabilir.

Ben şimdiki eylem sonrakini başlamadan önce bitmiş olmasını garantileyen 'onComplete' işlem olayı kullanarak 'senkron' çözüm uyguladık ve ben de özel semaphore ve GUI zaman uyumsuz aramalar kolları queue mantığını kullanıp IndexedDB veritabanına doğru 2 açık bağlantının aynı anda olmayacağını garanti eder.

+1

Bu yayında açıkladığınız kod herhangi bir yerde kullanılabilir mi? – dumbmatter

İlgili konular