У меня есть IndexedDB, которая локально кэширует данные с тремя свойствами a, b и c. a и b вместе образуют составной ключ, а c — это то, что мне нужно.
Теперь клиент получает от сервера список элементов, которые я хочу отобразить. Затем клиент должен найти (a,b) в IndexedDB и получить соответствие c, а затем хешировать c с помощью sha1 (используя Rusha, это уже работает нормально).
Для тех элементов, где sha1(c_client) не совпадает с sha1(c_server), клиент извлекает все пары (a,b) с сервера (используя один запрос GET с сериализованным JSON-массивом (a,b)). Сервер возвращает обновленное содержимое c, а затем клиент сохраняет новое значение c в IndexedDB, а затем передает весь массив объектов функции отображения.
Как видите, большая часть логики абсолютно нуждается в последовательных операциях, но IndexedDB сильно асинхронна.
Любой способ сделать то, что я хочу, синхронным способом?