chrome.storage.local fiyaskosu
merhaba,
bir borsa eklentisi yazıyorum. normalde sunucuda yapacaktım, ama kişi tarayıcı eklentisini tercih etti. sinirden beynimden vurulmuşa döndüm.
standart localStorage kullanımını bilmeyen yoktur herhalde
let lSet = (name, value) => localStorage.setItem(name, value),
lGet = name => localStorage.getItem(name);
ne güzel sade kısa öz, kullanılabilir. üstelik boolean türünde veride döndürüyor sorguladığınızda
var data = localStorage.getItem('data') ?
localStorage.getItem('data') :
localStorage.setItem('data', 'data verisi');
sorguladım varsa seç, yoksa oluştur öyle seç dedim. pratik. ister döngüye al kullan, ister bir tane kullan
data.obj.forEach(([key => val]) =>{
localStorage(key, val);
});
bir anda yüzlerce bile oluşturabildim. peki google napmış? bu güzelim yöntemi eklentiler için devre dışı bırakmış,
let data = {},
lSet = (name, value) => {
chrome.storage.local.set({[name]: value}, function() {
data[name] = value;
});
},
lGet = name => {
chrome.storage.local.get([name], function(result) {
return result.key;
});
},
hadi al sok bunu döngüye. değerin ne olduğu, nereye gittiği belli değil. bu kadar yorucu bi yöntem olur mu ya, hammallık resmen bu. arkadaş ben niye yöntem yazıp, içerisinde callback olarak tanımlama yapmak zorundayım. standart kullanımın yalın haliyle bile, ayarların konfigürasyonu ve verilerin çerez olarak depolanması için 479 satırlık sınıf yazdım. bu şekilde yaparsam, çoğu veriyi döngüye alamam uygun değil. çoklu dil desteğinden, çok sayıda form elemanlarının ayarına kadar veriyi localStorage de tuttum. tutmak zorundayım çünkü statik bir veri yok ortada. ne yapayım şimdi ben, iptal mi edeyim siparişi? hayır en çok zoruma giden? niye yani niye niye neşter dururken döner bıçağıyla ameliyata yolluyor beni google. set ettiğim değeride geri alamıyorum bu arada, anca get içerisinde calback yapacağım orda da kullanmak istediğim veriyle değişkeni eşitleyeceğim.
lütfen birileri benim görmediğim olumlu bir tarafını görüyorsa bu durumun, bana da göstersin.
bazen sana şaşırıyorum, herkese çok detaylı uzun ve teknik cevaplar veriyorsun. iki mesajı da okudum, bahsettiğin örneği de uyguladım, yeni aynı sonucu aldım, aslında 3. mesajımda yer alan callback'den bir farkı yok, sadece ben daha kısa yazmışım. birde siz, now anahtarını da bu callback'a almışsınız. çok fazla şey denedim aslında, dediğiniz gibi işlem bitmeden değerleri okumaya çalıştığımı fark etmemin üzerindne çok geçti. ama ne yaparsam yapayım, asekron döngü yazıp değerin dönmesini bekletsem bile değer alamıyorum. sizin verdiğiniz örnekte başarısızlıkla sonuçlandı. başta şöyle düşündüm, kurucu içerisinde tek özelliğe tüm ayarları aktarırsam, diğer yöntemler içerisinde ekstra kod yazmadan işimi görürüm. bu yüzden bu kadar zorladım, aman bu da böyle olsun demedim. nitekim olmadı : )
kendi kodunuzu test etmek istersenizde
//manifest.json
{
"name": "Olymp Trade Transactions",
"description": "For technical support, you can always contact me on fiver. https://www.fiverr.com/****",
"version": "1.0",
"manifest_version": 3,
"action": {
"default_popup": "index.html",
"default_icon": "logo.png"
},
"permissions": [
"storage",
"unlimitedStorage",
"notifications",
"contextMenus"
]
}
sıradan bir klasöre bunu ve index.html olarak kodunuzu ekleyebilirsiniz.