4

IndexedDB の同期API は、Web ワーカー内で使用することを目的としています。

同期 API は、Web ワーカー内でのみ使用することを意図しています。

しかし、非同期 API があるため、Web ワーカーで同期 API を使用する意味は何ですか。とにかく非同期APIはUIスレッドに影響しませんか?

4

3 に答える 3

8

同期 API は、非同期 API よりも使いやすいです。Web ワーカーには非同期は必要ありません。

于 2012-09-04T03:56:53.987 に答える
3

考えた結果、Webワーカーでは非同期である必要があり、バックグラウンドスレッドの同期APIに関する一見良いアイデアは、ひどい罠であることが判明したとさえ考えています。

事実、同期はIO待機の偽物です。非同期であろうと同期であろうと、内部的には同じ非同期プロセスです。ワーカーは、IO待機中に興味深いCPU作業を行う必要があります。

さらに、UIスレッドの非同期コードがすでにある可能性があります。フォアグラウンド用の非同期とバックグラウンド用の同期の両方をコーディングするよりも、非同期コードを再利用する方が適切です。

非同期APIは、異なるスコープとモードを使用して複数のトランザクションを作成できます。これらのトランザクション非同期フローはインターレースです。同期APIでトランザクションをインターレースすることはできません。

同期APIで得られる唯一の利点は、使いやすいことです。しかし、promise/deferredパターンを使用した非同期ワークフローはすでに十分に整理されています。

おそらく優れた同期APIは、キーカーソルスキャンプロセス(UIスレッドの場合も)です。これは、シリアル化を伴わず、IOを必要としない可能性があるためです。ただし、同期APIのIDBCursorと非同期APIのIDBCursorWithValueは、ユースケースは異なりますが混乱を招きます。

同期APIの優れたアイデアは、高性能プログラムを作成する開発者にとってひどい罠です。

于 2012-11-09T00:47:35.700 に答える
2

同期 API は、これまでどのブラウザーにも実装されておらず、IndexedDB 標準の危険な部分としてマークされており、削除される可能性があります。また、現在 Google Chrome のみが、非同期 API を使用して Web ワーカー内に IndexedDB アクセスを実装しています。

参照W3CMozilla :

次の機能は危険にさらされており、実装が不足している可能性があるため、削除される可能性があります。

于 2012-09-04T13:11:10.917 に答える