Если я использую CacheStorage.open()
для получения того же Cache
в потоке пользовательского интерфейса, что и в рабочем потоке, и начинаю чтение/запись из него в обе стороны, это безопасно? Или могут быть условия гонки? Я надеюсь, что Cache API является поточно-ориентированным (я предполагаю, что он, как и все остальное в JS).
это безопасно?
Да. Все методы возвращают Promises, так как кэш может управляться другим потоком, затем Promise разрешает, если другой поток выполнил операцию. Не может быть одновременных модификаций или других подобных странных вещей.
Или могут быть условия гонки?
Всякий раз, когда есть несколько потоков, могут быть условия гонки, это в природе вещей. Это означает, что если вы add()
запись в кэш при попытке получить ее, то get()
параллельно с другим WebWorker может получить или не дать вам результат.