Chỉ mụcDB có spec nói rằng bạn có thể truy cập cơ sở dữ liệu được lập chỉ mục đồng bộ, nhưng chưa được triển khai.Tôi làm cách nào để truy cập đồng bộ chỉ mụcDB?
Tôi chỉ tự hỏi nếu có một cách để làm cho nó đồng bộ bằng tay,
trông JavaScript của tôi như thế này,
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)
{
}
}
Vì vậy, bạn có thể đặt một cái gì đó ở đó để làm cho nó đợi cho đến khi onSuccess phương pháp đã được gọi trước khi tiếp tục?
Lý do tại sao tôi muốn làm điều này là mã trên được gói bên trong phương pháp này,
dojo.extend(esri.layers.ArcGISTiledMapServiceLayer, {
getTileUrl : function(level, row, col)
{
// blah
return url;
}
Vì vậy, nó là một lớp ngói ESRI (mà sẽ được tải gạch lên một bản đồ trên trang web của tôi), và phương thức đó cần trả lại url ngay lập tức cho một ô cụ thể. Nó hoặc sẽ là một URL để tải hình ảnh từ nếu nó không được lưu trữ trong cơ sở dữ liệu đã có, hoặc này,
data:image;base64,*BASE64DATA*
đâu BASE64DATA là các dữ liệu từ cơ sở dữ liệu nếu lưu trữ trước đó.
Trước đây tôi đã sử dụng localStorage cho mục này, hoạt động đồng bộ, nhưng có giới hạn 5MB nên tôi nghĩ tôi sẽ thử nghiệm với indexedDB.
Vui lòng [không thêm chữ ký hoặc dòng giới thiệu vào bài đăng của bạn] (http://stackoverflow.com/faq#signatures). – meagar