setItem(key,value)Hàm có phải là không đồng bộ không?
localStorage.setItem("key",someText);
setItem(key,value)Hàm có phải là không đồng bộ không?
localStorage.setItem("key",someText);
Câu trả lời:
Không, tất cả các localStoragecuộc gọi đều đồng bộ.
nbfhoặc exptừ mã xác thực.
Thực ra. lưu trữ web không còn là một phần của tiêu chuẩn cốt lõi HTML5 nữa, nó đã bị tách ra.
Đặc tả kỹ thuật (bản nháp) có liên quan có thể được tìm thấy ở đây và một điều bạn sẽ nhận thấy là nó không đề cập đến đồng bộ hoặc không đồng bộ ở bất kỳ đâu.
Tuy nhiên, phân tích văn bản sẽ gợi ý rằng nó phải đồng bộ (chữ in đậm của tôi):
Phương thức setItem (khóa, giá trị) trước tiên phải kiểm tra xem một cặp khóa / giá trị với khóa đã cho đã tồn tại trong danh sách được liên kết với đối tượng hay chưa.
Nếu không, thì một cặp khóa / giá trị mới phải được thêm vào danh sách, với khóa đã cho và giá trị của nó được đặt thành giá trị.
Nếu khóa đã cho tồn tại trong danh sách và giá trị của nó không bằng giá trị, thì khóa đó phải được cập nhật giá trị thành giá trị. Nếu giá trị trước đó của nó bằng giá trị, thì phương thức không phải làm gì cả.
Trong các tiêu chuẩn, các từ như must, shallvà maymang những ý nghĩa rất cụ thể. Thực tế là nó đang nói về những gì phương thức phải làm có nghĩa là bản thân phương thức đó phải làm điều đó, không phải trì hoãn nó đến một thời gian sau.
Điều này cũng ảnh hưởng đến ý thức chung. Nếu setItemkhông đồng bộ, có thể đặt một mục thành một giá trị cụ thể rồi ngay lập tức truy xuất nó, lấy giá trị trước đó của nó.
Có là một lưu ý ở dưới cùng của phần giao diện lưu trữ mà gợi ý khả năng hành vi không đồng bộ:
Đặc điểm kỹ thuật này không yêu cầu các phương thức trên phải đợi cho đến khi dữ liệu được ghi vào đĩa một cách vật lý. Chỉ cần có sự nhất quán trong những tập lệnh khác nhau truy cập vào cùng một danh sách cơ bản của các cặp khóa / giá trị nhìn thấy.
Tuy nhiên, đó chỉ là về những gì được ghi vào bộ nhớ lâu dài. Câu cuối cùng yêu cầu các tập lệnh truy cập vào cùng một đối tượng lưu trữ được yêu cầu để xem mọi thứ một cách đồng bộ.
LocalStorage. Khi tôi lưu trữ 10 món đồ, tôi bỏ lỡ 3 món trong số đó. Tôi thực sự tin rằng nó không đồng bộ, nhưng làm thế nào để kiểm tra xem nó đã hoàn thành chưa. nơi tôi phải thêm cuộc gọi lại?
must, shall, maybình luận trên RFC2119 ietf.org/rfc/rfc2119.txt
Câu hỏi này đã được trả lời. Đối với bất kỳ ai đến với điều này trong tương lai, bản chất javascript là đồng bộ. Mọi thứ chỉ không đồng bộ mà chúng tôi được chỉ định để làm như vậy. Do đó, bạn có thể cho rằng tất cả mọi thứ đều đồng bộ trừ khi chúng được chỉ định là không đồng bộ. Đây là với javascript, không phải các khuôn khổ được viết bằng Javascript. Họ đôi khi phá vỡ thông lệ này. Giống như NodeJs.