get
, set
, remove
, clear
and length
methods, but has some other important improvements:get/set
calls. Support for promises allows you to write clean code without callback spaghetti. Of course, if you like callbacks, you can use them. // , var config = { fullName: document.getElementById('name').getAttribute('value'), userId: document.getElementById('id').getAttribute('value') }; // localStorage.setItem('config', JSON.stringify(config)); // var config = JSON.parse(localStorage.getItem('config'));
JSON.parse
and JSON.stringify
. This is because localStorage can only work with JavaScript strings. No numbers, booleans, blobs and so on. This is annoying when you need to store numbers or arrays, and working with binary data makes it almost impossible (or, at least, monstrously slow). // IndexedDB. var db; var dbName = "dataspace"; var users = [ {id: 1, fullName: 'Matt'}, {id: 2, fullName: 'Bob'} ]; var request = indexedDB.open(dbName, 2); request.onerror = function(event) { // . }; request.onupgradeneeded = function(event) { db = event.target.result; var objectStore = db.createObjectStore("users", { keyPath: "id" }); objectStore.createIndex("fullName", "fullName", { unique: false }); objectStore.transaction.oncomplete = function(event) { var userObjectStore = db.transaction("users", "readwrite").objectStore("users"); } }; // , , var transaction = db.transaction(["users"], "readwrite"); // - transaction.oncomplete = function(event) { console.log("All done!"); }; transaction.onerror = function(event) { // }; var objectStore = transaction.objectStore("users"); for (var i in users) { var request = objectStore.add(users[i]); request.onsuccess = function(event) { // console.log(event.target.result); }; }
// var users = [ {id: 1, fullName: 'Matt'}, {id: 2, fullName: 'Bob'} ]; localForage.setItem('users', users, function(result) { console.log(result); });
// AJAX- var request = new XMLHttpRequest(); // , id=1 request.open('GET', "/users/1/profile_picture.jpg", true); request.responseType = 'arraybuffer'; // , request.addEventListener('readystatechange', function() { if (request.readyState === 4) { // readyState DONE // . localStorage localForage.setItem('user_1_photo', request.response, function() { // , . }); } }); request.send();
localForage.getItem('user_1_photo', function(photo) { // data URI - img. console.log(photo); });
localForage.getItem('user_1_photo').then(function(photo) { // data URI - img. console.log(photo); });
Source: https://habr.com/ru/post/212709/
All Articles