Zwischenspeichern von Objekten in javascript
ich habe einen poltergeist mit diesem code:
javascript-code:
var cache = {};
cache.init = function()
{
if(typeof(this.memory)=='undefined')
this.memory = {};
};
cache.set = function(key, value)
{
this.memory[key] = value;
};
cache.get = function(key)
{
if(console)
{
console.log("memory: ");
console.log(cache.memory);
console.log("key: "+key);
console.log(cache.memory[key]);
}
if(typeof(cache.memory[key])!='undefined')
return cache.memory[key];
return false;
};
var route = {};
route.load = function(url)
{
var route_list = cache.get('route_list');
if(route_list==false)
{
route_list = this.getList();
cache.set('route_list', route_list);
}
return route_list;
};
route.getList = function()
{
var result = false;
$.ajax(
{
url: 'route.json',
dataType: 'json',
async: false,
success: function(json)
{
result = json;
}
});
return result;
};
cache.init();
route.load();
route.load();
ich würde gerne cache-Objekte auf client-Seite mit "cache" setzen und erhalten.
Inhalt der route.json-Datei:
{
"/example":
{
"controller": "example"
},
"/example/show":
{
"controller": "example",
"method": "show"
}
}
und das Ergebnis in der firebug ist:
memory:
Object
{
route_list
Object { /example={...}, /example/show={...}}
}
key: route_list
undefined
warum undefined? ich kann navigieren innerhalb des Objekts mit firebug o.O
EDIT: ich habe den zweiten Aufruf der route.load(); bekomme ich " undefined Schlüssel
- Zeigen Sie uns, wie Sie verwendet firebug - ich kann nicht sehen, alle log-Anweisungen
- console.Logbuch im cache.bekommen, hier der snapshot: i.imgur.com/VMSsp.png
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, jetzt sehe ich Ihr Problem. Ihr code
undefined
weil es nichtsAlles korrekt ausgeführt. Nun, sehen Sie das memory-Objekt zwei mal in der Konsole - aber es ist das gleiche Objekt in seinem aktuellen Zustand bei der Inspektion und nicht in dem Zustand, wenn Sie sich angemeldet haben, es. Siehe auch
kommt der Fehler aus node.js:
ich denke, es ist asyncronously:
mit diesem habe ich das problem gelöst vorübergehend...