HTML5 localStorage는 비동기식입니까? setItem(key,value)기능 비동기? localStorage.setItem(“key”,someText);

은 IS setItem(key,value)기능 비동기?

localStorage.setItem("key",someText);


답변

아니요, 모든 localStorage호출은 동기식입니다.


답변

사실은. 웹 저장소는 더 이상 HTML5 핵심 표준의 일부가 아니며 분리되었습니다.

관련 (초안) 사양은 여기 에서 찾을 수 있으며 눈에 띄는 점은 어디에서나 동기 또는 비동기를 언급하지 않는다는 것입니다.

그러나 텍스트를 분석하면 동기식이어야 함을 알 수 있습니다 (내 굵은 글씨).

setItem (키 값)에있어서 소정 키의 키 / 값 쌍 이미 오브젝트와 연관된 목록에 있는지 먼저 확인해야한다.

그렇지 않은 경우 지정된 키와 값을 value로 설정하여 새 키 / 값 쌍 을 목록에 추가해야합니다 .

주어진 키가 목록에 존재하고 그 값이 값과 같지 않다면 그 값을 값으로 업데이트 해야합니다. 이전 값이 value와 같으면 메서드는 아무 작업도 수행하지 않아야합니다.

표준에서 must, shall와 같은 단어 may매우 구체적인 의미를 가지고 있습니다. 메서드 가 무엇을해야하는지에 대해 이야기하고 있다는 사실 은 메서드 자체가 그것을해야한다는 것을 의미하며, 나중에 그것을 미루는 것이 아닙니다.

이것은 또한 상식에 따릅니다. (가) 경우 setItem비동기했다, 이전 값을 받고, 그것을 바로 다음 특정 값에 대한 항목을 설정 검색 할 수있을 것이다.


입니다 비동기 행동의 가능성을 암시 저장 인터페이스 섹션 하단의주의 사항 :

이 사양에서는 데이터가 물리적으로 디스크에 기록 될 때까지 위의 방법이 대기 할 필요가 없습니다. 동일한 기본 키 / 값 쌍 목록에 액세스하는 다른 스크립트의 일관성 만 필요합니다.

그러나 이는 장기 저장에 기록되는 내용에 국한됩니다. 마지막 문장은 동일한 스토리지 객체에 액세스하는 스크립트가 동기식으로 사물을 확인하도록 요구합니다.


답변

이 질문은 이미 답변되었습니다. 미래에이 문제에 대해 누구나 자바 스크립트는 본질적으로 동 기적입니다. 사물은 비동기식 일뿐입니다. 이 때문에 비동기로 지정되지 않는 한 모든 것이 동 기적이라고 가정 할 수 있습니다. 이것은 자바 스크립트로 작성된 프레임 워크가 아닌 자바 스크립트를 사용합니다. 그들은 때때로이 관행을 깨뜨립니다. NodeJ와 같습니다.