Apakah setItem(key,value)fungsinya asynchronous?
localStorage.setItem("key",someText);
Apakah setItem(key,value)fungsinya asynchronous?
localStorage.setItem("key",someText);
Jawaban:
Tidak, semua localStoragepanggilan sinkron.
nbfatau expdari token autentikasi.
Sebenarnya. penyimpanan web tidak lagi menjadi bagian dari standar inti HTML5, itu telah dipisahkan.
Spesifikasi (draf) yang relevan dapat ditemukan di sini dan satu hal yang akan Anda perhatikan adalah bahwa spesifikasi tersebut tidak menyebutkan sinkron atau asinkron di mana pun.
Namun, analisis teks akan menyarankan bahwa itu harus sinkron (tebal saya):
Metode setItem (key, value) harus terlebih dahulu memeriksa apakah pasangan kunci / nilai dengan kunci yang diberikan sudah ada dalam daftar yang terkait dengan objek tersebut.
Jika tidak, pasangan kunci / nilai baru harus ditambahkan ke daftar, dengan kunci yang diberikan dan nilainya disetel ke nilai.
Jika kunci yang diberikan memang ada dalam daftar, dan nilainya tidak sama dengan nilai, maka nilainya harus diperbarui menjadi nilai. Jika nilai sebelumnya sama dengan nilai, maka metode tersebut tidak boleh melakukan apa pun.
Dalam standar, kata-kata seperti must, shalldan maymembawa sangat makna khusus. Fakta bahwa itu berbicara tentang apa yang harus dilakukan metode berarti bahwa metode itu sendiri harus melakukannya, bukan menundanya di lain waktu.
Ini juga bertentangan dengan akal sehat. Jika setItemasinkron, dimungkinkan untuk menyetel item ke nilai tertentu lalu segera mengambilnya, mendapatkan nilai sebelumnya.
Ada adalah catatan di bagian bawah bagian antarmuka penyimpanan yang mengisyaratkan kemungkinan perilaku asynchronous:
Spesifikasi ini tidak mengharuskan metode di atas menunggu hingga data secara fisik ditulis ke disk. Hanya diperlukan konsistensi dalam skrip berbeda yang mengakses daftar dasar yang sama dari pasangan kunci / nilai yang dilihat.
Namun, itu hanya dalam hal apa yang ditulis ke penyimpanan jangka panjang. Kalimat terakhir mengamanatkan bahwa skrip yang mengakses objek penyimpanan yang sama diperlukan untuk melihat sesuatu secara sinkron.
LocalStorage. Ketika saya menyimpan 10 item, saya kehilangan 3 item. Saya benar-benar percaya itu asinkron, tetapi bagaimana cara memeriksa apakah itu dilakukan. di mana saya harus menambahkan panggilan balik?
must, shall, maykomentar di atas RFC2119 ietf.org/rfc/rfc2119.txt
Pertanyaan ini sudah terjawab Bagi siapa pun yang datang ke hal ini di masa depan, javascript pada dasarnya sinkron. Hal-hal hanya asinkron, kita ditentukan untuk melakukannya. Karenanya, Anda dapat menganggap semua hal sinkron kecuali semuanya ditentukan sebagai asinkron. Ini dengan javascript, bukan kerangka kerja yang ditulis dalam Javascript. Mereka terkadang melanggar praktik ini. Seperti NodeJs.