IndexedDB's同步API有意在Web worker内使用:
同步API仅适用于Web Workers内部。
但是既然是一个同步的API,那么在Web worker中使用同步API是什么意思。 async API无论如何都不会影响UI线程?
答案 0 :(得分:8)
同步API比async API更容易使用。 Web工作者不需要异步。
答案 1 :(得分:3)
经过深思熟虑,在web worker中有必要异步,甚至认为对于后台线程的同步API似乎好主意变成了可怕的陷阱。
事实是同步对于IO等待是假的。无论是异步还是同步,internally they are same async process。在IO等待期间,工作者应该做有趣的CPU工作。
此外,我们可能已经有UI线程的异步代码。重复使用异步代码比编写前景异步和背景同步更好。
异步API可以使用不同的范围和模式创建多个事务。这些事务异步流是交错的。无法在同步API中交织事务。
我们获得同步API的唯一优势是易于使用。但是使用promise / deferred模式的异步工作流已经很好地解决了。
可能很好的同步API是关键光标扫描过程(也适用于UI线程),因为它不涉及序列化并且可能不需要IO。但是,用于同步API的IDBCursor和用于异步API的IDBCursorWithValue将会令人困惑,尽管用例不同。
对于开发人员编写高性能程序而言,同步API似乎是一个很糟糕的陷阱。答案 2 :(得分:2)