Tôi trễ vài năm, nhưng xem xét câu hỏi chưa bao giờ được trả lời trực tiếp, tôi nghĩ tôi sẽ ném hai xu vào, cũng như thêm một số gợi ý!
Trước tiên, nếu bạn đang đọc, có thể bạn không nên sử dụng WebSQL. Nó đã được deprecated ủng hộ IndexedDB, mà tại thời điểm này là cơ sở dữ liệu duy nhất theo dõi tiêu chuẩn W3C.
Nếu vì lý do gì đó, bạn có ý định sử dụng WebSQL và bạn có thể sống mà không có những lợi ích mà API không đồng bộ của nó cung cấp (một số được đề cập trong câu trả lời của John Fowler), thì bạn nên biết xác định một synchronous API.
Vì vậy, có, có một cách để thực hiện các câu lệnh trong WebSQL đồng bộ, miễn là các trình duyệt bạn đang phát triển đã triển khai API đồng bộ.
Nếu bạn không ngại xử lý giao diện không đồng bộ chỉ đơn giản là giao diện đồng bộ, hãy kiểm tra BakedGoods.
Với nó, thực hiện truy vấn của bạn cũng đơn giản như:
bakedGoods.getAll({
filter: "valueObj.holdingType === 'month'",
storageTypes: ["webSQL"],
//Contains database configuration data and operation preferences
options: optionsObj,
complete: function(byStorageTypeResultDataObj, byStorageTypeErrorObj){}
});
giao diện đơn giản của nó và hỗ trợ cơ sở lưu trữ chưa từng có đi kèm với chi phí thiếu sự hỗ trợ đối với một số lưu trữ các cấu hình thiết bị cụ thể. Ví dụ, nó không hỗ trợ việc dẫn các hoạt động lưu trữ trong các bảng WebSQL với các khóa chính nhiều cột.
Vì vậy, nếu bạn sử dụng nhiều loại tính năng đó, bạn có thể muốn tìm ở nơi khác.
Ồ, và vì lợi ích của sự minh bạch hoàn toàn, BakedGoods được duy trì bởi bạn thực sự :).
@Michael Để đặt câu hỏi, hãy sử dụng nút "Đặt câu hỏi". –