Ist die setItem(key,value)Funktion asynchron?
localStorage.setItem("key",someText);
Ist die setItem(key,value)Funktion asynchron?
localStorage.setItem("key",someText);
Antworten:
Nein, alle localStorageAnrufe sind synchron.
nbfoder expvom Authentifizierungstoken zusammen.
Tatsächlich. Webspeicher ist nicht mehr Teil des HTML5-Kernstandards, sondern wurde abgespalten.
Die relevante (Entwurfs-) Spezifikation finden Sie hier, und Sie werden feststellen, dass nirgendwo synchron oder asynchron erwähnt wird.
Eine Analyse des Textes würde jedoch darauf hindeuten, dass er synchron sein muss (fett gedruckt):
Die setItem (Schlüssel, Wert) Verfahren müssen zunächst überprüfen , ob ein Schlüssel / Wert - Paar mit dem gegebenen Schlüssel existiert bereits in der Liste mit dem Gegenstand verbunden ist .
Ist dies nicht der Fall, muss der Liste ein neues Schlüssel / Wert-Paar hinzugefügt werden, wobei der angegebene Schlüssel und der Wert auf Wert gesetzt sind.
Wenn der angegebene Schlüssel in der Liste vorhanden ist und sein Wert nicht dem Wert entspricht, wird er verwendet muss sein Wert auf den Wert aktualisiert werden. Wenn der vorherige Wert gleich dem Wert ist, darf die Methode nichts tun.
In Normen, Wörter wie must, shallund maytragen sehr spezifische Bedeutungen. Die Tatsache, dass es darum geht, was die Methode tun muss, bedeutet, dass die Methode es selbst tun muss und es nicht auf einen späteren Zeitpunkt verschieben muss.
Dies widerspricht auch dem gesunden Menschenverstand. Wenn die setItemasynchron wären, wäre es möglich, ein Element auf einen bestimmten Wert zu setzen und es dann sofort abzurufen, wobei der vorherige Wert abgerufen wird.
Am Ende des Abschnitts über die Speicherschnittstelle befindet sich ein Hinweis, der auf die Möglichkeit eines asynchronen Verhaltens hinweist:
Diese Spezifikation erfordert nicht, dass die obigen Methoden warten, bis die Daten physisch auf die Festplatte geschrieben wurden. Es ist nur die Konsistenz der verschiedenen Skripte erforderlich, die auf dieselbe zugrunde liegende Liste von Schlüssel / Wert-Paaren zugreifen.
Dies gilt jedoch nur für das, was in die Langzeitspeicherung geschrieben wurde. Der letzte Satz schreibt vor, dass Skripte, die auf dasselbe Speicherobjekt zugreifen, erforderlich sind, um die Dinge synchron zu sehen.
LocalStorage. Wenn ich 10 Artikel speichere, vermisse ich 3 davon. Ich glaube wirklich, dass es asynchron ist, aber wie man überprüft, ob es getan wird. Wo muss ich einen Rückruf hinzufügen?
must, shall, mayKommentar über RFC2119 ietf.org/rfc/rfc2119.txt
Diese Frage wurde bereits beantwortet. Für jeden, der in Zukunft dazu kommt, ist Javascript von Natur aus synchron. Die Dinge sind nur asynchron, wir sind dafür spezifiziert. Aus diesem Grund können Sie davon ausgehen, dass alle Dinge synchron sind, es sei denn, sie sind als asynchron angegeben. Dies geschieht mit Javascript, nicht mit in Javascript geschriebenen Frameworks. Sie brechen manchmal diese Praxis. Wie NodeJs.