javascript - Object scope. Why does this give a null object -
this question has answer here:
- how return response asynchronous call? 21 answers
- how return ajax response text? [duplicate] 2 answers
initialize: function () { var store = {}; var item = {}; var me = this; ext.ajax.request({ url: "some_valid_url", success: function (response) { try { var parser = new domparser(); var xml = parser.parsefromstring(response.responsetext, "text/xml"); store = ext.create('ext.data.store', { autoload: true, fields: ['temp', 'low', 'high', 'desc', 'icon'], data: xml, proxy: { type: 'memory', reader: { type: 'xml', rootproperty: 'current', record: 'day' } } }); item = ext.create("ext.container", { var bla = "hello world", }) } }); console.log("store , item") console.log(item); console.log(store);
why item
, store
give null
objects? can see it's parsing data, if put console.log in between store
, item
elements valid element...
store , item object {} articleweatherlist.js:105 object {} articleweatherlist.js:106
ajax asynchronous means code continues executing without waiting request complete. therefore, when trying use item , store, request has not yet completed , success method sets them has not yet run. ways round force request happen synchronously (although bad idea) or put code depends on request success callback or functions called within success callback.
Comments
Post a Comment