IndexedDB同步api + web worker - 重点是什么?

时间:2012-09-03 20:20:50

标签: javascript html5 web-worker indexeddb

IndexedDB's同步API有意在Web worker内使用:

  

同步API仅适用于Web Workers内部。

但是既然是一个同步的API,那么在Web worker中使用同步API是什么意思。 async API无论如何都不会影响UI线程?

3 个答案:

答案 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)

到目前为止,在任何浏览器中都没有实现同步API,它被标记为IndexedDB标准的风险部分,可能会被删除。目前只有Google Chrome使用async api在Web worker中实现了IndexedDB访问。

参考W3CMozilla

  

由于以下功能存在风险,可能会被删除   可能缺乏实施。