Примера:Асинхронная загрузка данных в конструкторе класса
var readBackend = function(){
var deferred = q.defer();
readData().then(function(data) {
deferred.resolve(data);
})
return deferred.promise;
}
class Test {
constructor(){
readBackend().then(function(data) {
this.importantData = data;
})
}
someFunc() {
//iterate over important data, but important data is defined
//promise didnt resolved yet
}
}
var test = new Test();
test.someFunc(); //throws exception!
Есть ли способ, чтобы гарантировать, что свойства объекта инициируется конструктора, когда я называю someFunc
?
Единственный способ, который приходит на ум создает init
функцию, которая будет возвращать обещание, но потом, каждый раз я использую мой класс, я бы полагаться на функцию инициализации для правильной работы
[Не выполнять асинхронную загрузку данных в свой конструктор] (http://stackoverflow.com/q/24398699/1048572). – Bergi