A setItem(key,value)
função é assíncrona?
localStorage.setItem("key",someText);
A setItem(key,value)
função é assíncrona?
localStorage.setItem("key",someText);
Respostas:
Não, todas as localStorage
chamadas são síncronas.
nbf
ou a exp
partir do token de autenticação.
Na realidade. o armazenamento na web não faz mais parte do padrão principal do HTML5, foi dividido.
A especificação (rascunho) relevante pode ser encontrada aqui e a única coisa que você notará é que ela não menciona síncrona ou assíncrona em nenhum lugar.
No entanto, a análise do texto sugere que ele deve ser síncrono (em negrito):
O método setItem (chave, valor) deve primeiro verificar se um par de chave / valor com a chave fornecida já existe na lista associada ao objeto.
Caso contrário, um novo par de chave / valor deve ser adicionado à lista, com a chave fornecida e seu valor definido como valor.
Se a chave fornecida existir na lista e seu valor não for igual ao valor, ele deverá ter seu valor atualizado para valor. Se o seu valor anterior for igual ao valor, o método não deve fazer nada.
Em padrões, palavras como must
, shall
e may
levar muito significados específicos. O fato de estar falando sobre o que o método deve fazer significa que o próprio método deve fazê-lo, não o adiará mais tarde.
Isso também adia o bom senso. Se os setItem
fossem assíncronos, seria possível definir um item para um valor específico e recuperá-lo imediatamente, obtendo seu valor anterior.
Não é uma nota na parte inferior da seção interface de armazenamento que aponta para a possibilidade de comportamento assíncrono:
Esta especificação não exige que os métodos acima esperem até que os dados sejam gravados fisicamente no disco. É necessária apenas consistência no que os diferentes scripts que acessam a mesma lista subjacente de pares chave / valor são necessários.
No entanto, isso é apenas em termos do que é gravado no armazenamento a longo prazo. A última frase exige que os scripts que acessam o mesmo objeto de armazenamento sejam necessários para ver as coisas de forma síncrona.
LocalStorage
. Quando guardo 10 itens, sinto falta de 3 deles. Eu realmente acredito que é assíncrono, mas como verificar se foi feito. onde eu tenho que adicionar retorno de chamada?
must
, shall
, may
comentário acima RFC2119 ietf.org/rfc/rfc2119.txt
Esta pergunta já foi respondida. Para quem chega a isso no futuro, o javascript é síncrono por natureza. As coisas são apenas assíncronas, elas são especificadas para isso. Por esse motivo, você pode assumir que todas as coisas são síncronas, a menos que sejam especificadas para serem assíncronas. Isso é com javascript, não estruturas escritas em Javascript. Às vezes eles quebram essa prática. Como os NodeJs.