Добрый день.
столкнулся с интересной проблемой..
имеется код:
function makeCounter() {
return function f() {
if (!f.currentCount) {
f.currentCount = 0;
}
return ++f.currentCount;
};
}
function dataPoint(addres, name,count) {
this.setCoords2 = function(arr){
this.coords = arr;
}
this.setCoords = function(addres2,obj){
ymaps.geocode(''+addres2+'', {
results: 1
}).then(function (res) {
GeoObject = res.geoObjects.get(0),
coords = GeoObject.geometry.getCoordinates()
/*POINT*/
obj.setCoords2(coords)
dPoint.setPoint(count,addres,name,coords)
})
}
this.setCoords(addres,this)
this.getCoords = function(){
return this.coords
}
}
var mydata ={}
MYcount = makeCounter();
mydata[MYcount()] = new dataPoint('г.Санкт-Петербург, ул.Курчатова, д.10',"point-1",1)
mydata[MYcount()] = new dataPoint('г.Санкт-Петербург, ул.Политехническая, д.6',"point-2",2)
console.log(mydata) // Возвращает хорошо и правильно всю информацию
/**
Object
1: dataPoint
addres: "г.Санкт-Петербург, ул.Курчатова, д.10"
coords: Array[2]
getCoords: function (){
name: "point-1"
setCoords: function (addres2,obj){
setCoords2: function (arr){
__proto__: dataPoint
2: dataPoint
addres: "г.Санкт-Петербург, ул.Политехническая, д.6"
coords: Array[2]
getCoords: function (){
name: "point-2"
setCoords: function (addres2,obj){
setCoords2: function (arr){
__proto__: dataPoint
__proto__: Object
/**/
// здесь начинаются проблемы....
// в частности не видно coords
for(i in mydata) {
console.log(mydata[i])
}
после анализа было выявлено что проблема возникает в момент /*POINT*/
там переменная видится,
а если её передавать в глобальную или в объект.. её значение теряется..
или как показалось..
сначала выполняется весь код, возвращается результат
а код в POINT выполняется после.
тк если изменить метод setCoords
и вместо этого метода выполнять
function dataPoint(addres, name,count) {
this.setCoords2 = function(arr){
this.coords = arr;
}
obj = this
ymaps.geocode(''+addres+'', {
results: 1
}).then(function (res) {
GeoObject = res.geoObjects.get(0),
coords = GeoObject.geometry.getCoordinates()
obj.coords = coords
})
this.setCoords(addres,this)
this.getCoords = function(){
return this.coords
}
this.name=name
this.addres = addres
}
проблема остаётся такой же..
подскажите пожалуйста где искать ошибку... ?
второй раз уже сталкиваюсь с подобной проблемой..
первый раз та же ситуация была
только вместо функции ymaps.geocode
была вида
myvar ='';
$.get(url,data,function(result){
//Здесь result видится, а если присвоить
myvar = result
// myvar используется с присвоенным значение
})
// здесь myvar пустое...