IndeksedDB ma spec, mówiąc, że można uzyskać dostęp do indeksowanej bazy danych synchronicznie, ale nie została jeszcze zaimplementowana.Jak mogę uzyskać dostęp do indexedDB synchronicznie?
Zastanawiam się, czy istnieje sposób, aby to synchroniczny ręcznie,
Moja JavaScript wygląda na to,
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)
{
}
}
Więc można umieścić coś tam zrobić to czekać, aż onSuccess metoda została wywołana przed kontynuowaniem?
powód, dla którego chcę zrobić to powyższy kod jest owinięty wewnątrz tej metody,
dojo.extend(esri.layers.ArcGISTiledMapServiceLayer, {
getTileUrl : function(level, row, col)
{
// blah
return url;
}
Więc jest to warstwa płytki ESRI (która załaduje płytek na mapie na mojej stronie internetowej), i ta metoda musi natychmiast odesłać adres URL dla konkretnego kafelka. Będzie ona być albo URL załadować obrazu z, jeśli nie jest buforowane w bazie już, czy to,
data:image;base64,*BASE64DATA*
Gdzie BASE64DATA to dane z bazy danych, jeśli wcześniej buforowane.
Poprzednio używałem localStorage do tego, który działa synchronicznie, ale ma limit 5 MB, więc pomyślałem, że będę eksperymentował z indexedDB.
Proszę [nie dodawaj podpisów ani sloganów do swoich postów] (http://stackoverflow.com/faq#signatures). – meagar