Jestem kilka lat późno, ale biorąc pod uwagę, że kwestia nigdy nie została bezpośrednio odpowiedział Pomyślałem rzucam moje dwa grosze, a także ass dodać kilka propozycji!
Po pierwsze, jeśli czytasz to, prawdopodobnie nie powinieneś używać WebSQL. Został on deprecated na rzecz IndexedDB, który w tym momencie jest jedyną bazą danych na ścieżce standardów W3C.
Jeśli z jakiegoś powodu zamierzasz używać WebSQL i możesz żyć bez zalet, które oferuje jego asynchroniczne API (niektóre z nich są wymienione w odpowiedzi Johna Fowlera), to powinieneś wiedzieć, że jego specyfikacja definiuje synchronous API.
Tak, istnieje sposób na synchroniczne wykonywanie instrukcji w WebSQL, pod warunkiem, że przeglądarki, dla których pracujesz, zaimplementowały synchroniczny interfejs API.
Jeśli nie masz nic przeciwko interfejsowi asynchronicznemu, który jest tak prosty jak synchroniczny, sprawdź kod BakedGoods.
Wraz z nim, wykonując zapytanie jest tak proste, jak:
bakedGoods.getAll({
filter: "valueObj.holdingType === 'month'",
storageTypes: ["webSQL"],
//Contains database configuration data and operation preferences
options: optionsObj,
complete: function(byStorageTypeResultDataObj, byStorageTypeErrorObj){}
});
Jego prosty interfejs i niezrównaną obsługą obiektu przechowywanie kosztem braku wsparcia dla niektórych konfiguracjach obiektu specyficzne magazynowych. Na przykład nie obsługuje prowadzenia operacji przechowywania w tabelach WebSQL za pomocą wielokolumnowych kluczy podstawowych.
Jeśli więc intensywnie korzystasz z tego typu funkcji, możesz poszukać gdzie indziej.
Aha, i ze względu na całkowitą przejrzystość, BakedGoods jest utrzymywany przez Ciebie naprawdę :).
@Michael Aby zadać pytanie, użyj przycisku "Zadaj pytanie". –