Я пытаюсь установить переменную / свойство модуля из вложенной функции (обычно это обратный вызов xhr (Api.get()
) внутри этого модуля (в функции init()
), но он не работает, и я не могу понять, почему .
//posts
var Posts = (function() {
//array of all posts objects
var data = null;
//initialize the posts module
var init = function(callback) {
if(data === null) {
//load all posts
loadAll(function(response){
// data = JSON.parse(response)
var posts = JSON.parse(response)
//create array
data = posts;
// call callback
console.log(data)
callback()
})
}
}
// return all posts from api as json
var loadAll = function(callback) {
Api.get('/api/posts/get', function(response) {
callback(response)
})
}
//public interface
return {
data: data,
init: init,
loadAll: loadAll
}
})();
После вызова Posts.init()
я регистрирую Posts.data
на консоли, но она все еще null
. Однако console.log(data)
внутри метода init()
регистрирует ожидаемый массив объектов, которые я пытаюсь присвоить Posts.data
. Кажется, что data
внутри обратного вызова является другой переменной, чем Posts.data
. Может кто-нибудь объяснить, почему и, если возможно, предоставить решение для установки свойства modules data
внутри Api.get()
?