La setItem(key,value)fonction est-elle asynchrone?
localStorage.setItem("key",someText);
La setItem(key,value)fonction est-elle asynchrone?
localStorage.setItem("key",someText);
Réponses:
Non, tous les localStorageappels sont synchrones.
nbfou à exppartir de celui-ci.
Réellement. le stockage Web ne fait plus partie du standard de base HTML5, il a été séparé.
La spécification (brouillon) pertinente peut être trouvée ici et la seule chose que vous remarquerez est qu'elle ne mentionne nulle part synchrone ou asynchrone.
Cependant, l'analyse du texte suggère qu'il doit être synchrone (mon gras):
La méthode setItem (key, value) doit d'abord vérifier si une paire clé / valeur avec la clé donnée existe déjà dans la liste associée à l'objet.
Si ce n'est pas le cas, une nouvelle paire clé / valeur doit être ajoutée à la liste, avec la clé donnée et avec sa valeur définie sur value.
Si la clé donnée existe dans la liste et que sa valeur n'est pas égale à value, alors sa valeur doit être mise à jour à value. Si sa valeur précédente est égale à value, la méthode ne doit rien faire.
Dans les normes, des mots comme must, shallet mayporter très significations spécifiques. Le fait qu'il parle de ce que la méthode doit faire signifie que la méthode elle-même doit le faire, et non la reporter à une date ultérieure.
Cela renvoie également au bon sens. Si le setItemétait asynchrone, il serait possible de définir un élément sur une valeur spécifique puis de le récupérer immédiatement, en obtenant sa valeur précédente.
Là y a une note au bas de la section de l'interface de stockage qui fait allusion à la possibilité d'un comportement asynchrone:
Cette spécification n'exige pas que les méthodes ci-dessus attendent jusqu'à ce que les données aient été physiquement écrites sur le disque. Seule la cohérence dans ce que voient les différents scripts accédant à la même liste sous-jacente de paires clé / valeur est requise.
Cependant, ce n'est qu'en termes de ce qui est écrit sur le stockage à long terme. La dernière phrase stipule que les scripts accédant au même objet de stockage sont nécessaires pour voir les choses de manière synchrone.
LocalStorage. Lorsque je stocke 10 articles, 3 d'entre eux me manquent. Je crois vraiment que c'est asynchrone, mais comment vérifier si c'est fait. où dois-je ajouter un rappel?
must, shall, maycommentaire ci - dessus 2119 ietf.org/rfc/rfc2119.txt~~V~~singular~~3rd
Cette question a déjà reçu une réponse. Pour tous ceux qui en viennent à l'avenir, javascript est synchrone par nature. Les choses ne sont asynchrones que si elles sont spécifiées pour le faire. Pour cette raison, vous pouvez supposer que toutes les choses sont synchrones à moins qu'elles ne soient spécifiées comme étant asynchrones. C'est avec javascript, pas avec des frameworks écrits en Javascript. Ils rompent parfois cette pratique. Comme NodeJs.