あるsetItem(key,value)関数は非同期?
localStorage.setItem("key",someText);
あるsetItem(key,value)関数は非同期?
localStorage.setItem("key",someText);
回答:
いいえ、すべてのlocalStorage呼び出しは同期しています。
nbfかexp、認証トークンからのものです。
実は。WebストレージはHTML5コア標準の一部ではなくなり、分割されました。
関連する(ドラフト)仕様はここにあり、同期または非同期については言及されていないことに気づくでしょう。
しかし、テキストの分析は、それが同期的である必要があることを示唆します(私の太字):
SetItem関数(キー、値)メソッドは、指定されたキーを持つキー/値ペアが既にオブジェクトに関連付けられたリストに存在する場合は、最初のチェックしなければなりません。
そうでない場合は、指定されたキーとその値をvalueに設定して、新しいキー/値のペアをリストに追加する必要があります。
指定されたキーがリストに存在し、その値がvalueと等しくない場合は、その値をvalueに更新する必要があります。以前の値がvalueと等しい場合、メソッドは何も実行してはなりません。
標準では、言葉が好きでmust、shallかつmay持ち運びに非常に特定の意味を。メソッドが何をしなければならないかについて話しているという事実は、メソッド自体がそれをやらなければならないことを意味します。
これも常識に従います。setItem非同期の場合、アイテムを特定の値に設定してすぐに取得し、以前の値を取得することができます。
そこでの非同期動作の可能性を示唆ストレージインタフェース部の下部にあるノートは:
この仕様では、上記のメソッドがデータが物理的にディスクに書き込まれるまで待機する必要はありません。キー/値ペアの同じ基本的なリストにアクセスする異なるスクリプトが見るものの一貫性のみが必要です。
ただし、それは長期ストレージに書き込まれる内容の点でのみです。最後の文は、同期的に物事を見るには、同じストレージオブジェクトにアクセスするスクリプトが必要であることを要求しています。
LocalStorage。最も適切なのは使用です。10個のアイテムを保存すると、そのうち3個が見つかりません。私はそれが非同期だと本当に信じていますが、それが行われたかどうかを確認する方法。どこにコールバックを追加する必要がありますか?