While WebDatabases have a PITA async-only API for reasons which are entirely beyond my comprehension
That's because they want to support responsive applications. Javascript doesn't really have native concurrency operations, so the best (only?) way to do it is via async operations.
It's like XMLHttpRequest: Async only, which can be harder to program, but makes it a lot more robust.
Worker<->UI communication is asynchronous, and has additional limitations (only copying, only JSON-able data), so synchronous worker API in many cases would just shift complexity elsewhere.
In part. It makes conditional, nested queries much simpler, however, when you don't need to nest async callbacks 20 layers deep.
I understand that having a synchronous API would mean more people would use it. But honestly, I see that as their problem. A fair number of queries, such as "select * from your_table where id = ?", are useful to have synchronous as an option, and should perform quickly enough to be invisible. And synchronous can easily be made asynchronous, but the other way around is essentially impossible without any Thread.join.
That's because they want to support responsive applications. Javascript doesn't really have native concurrency operations, so the best (only?) way to do it is via async operations.
It's like XMLHttpRequest: Async only, which can be harder to program, but makes it a lot more robust.