IndexedDB ha un spec che dice che è possibile accedere ad un database indicizzato in modo sincrono, ma non è ancora stato implementato.Come posso accedere a indexedDB in modo sincrono?
Mi stavo chiedendo se esiste un modo per rendere sincroni manualmente,
mio JavaScript assomiglia a questo,
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)
{
}
}
così si può mettere qualcosa in là per rendere più attendere che l'onSuccess il metodo è stato chiamato prima di continuare?
Il motivo che voglio fare questo è il codice di cui sopra è avvolto all'interno di questo metodo,
dojo.extend(esri.layers.ArcGISTiledMapServiceLayer, {
getTileUrl : function(level, row, col)
{
// blah
return url;
}
quindi è un posatore ESRI (che caricherà le piastrelle su una mappa sulla mia pagina web), e quel metodo deve restituire immediatamente l'url per una particolare tessera. Sarà essere un URL per caricare l'immagine da se non è memorizzato nella cache nel database già, o di questo,
data:image;base64,*BASE64DATA*
Dove BASE64DATA sono i dati dal database, se precedentemente memorizzate nella cache.
In precedenza utilizzavo localStorage per questo, che funziona in modo sincrono, ma che ha un limite di 5 MB, quindi ho pensato di sperimentare con indexedDB.
Per favore [non aggiungere firme o tagline ai tuoi messaggi] (http://stackoverflow.com/faq#signatures). – meagar