Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.08.2014, 15:15
Новичок на форуме
Отправить личное сообщение для leonoff Посмотреть профиль Найти все сообщения от leonoff
 
Регистрация: 13.08.2014
Сообщений: 2

Цикл завершается не дожидаясь выполнения функции
Всем кто заглянул спасибо и привет.
Нужна свежая голова, т.к. моя уже от этой жары кипит.

Проблема вот в чем. Данные с консольки:
Цикл № 0:
Координаты на выходе 43.922311 ,56.300127

Цикл № 1:
Координаты на выходе 0
Координаты внутри функции 59.43996,32.025632

Т.е. получается, что цикл продолжает свое выполнение не дожидаясь выполнения function (res), и, соответсвенно, переменная coordinates равна 0.

Или я не правильно все понял. Не пойму в чем дело. Посоветуйте что-нибудь.

$.ajax({
	url:'clientsBase.csv',
	async: false,
	contentType: "application/json; charset=utf-8",
	success: function(data){
			var rows = data.split("\n");
			var src_res='';
			for	( var i in rows )	{
				var colls=rows[i].split(";");//или другой символ разделитель
				console.log('Цикл № ' + i);
				
				// Узнаем, содержаться ли координаты в clientsBase.csv
				coordinates=0;
				if (colls[6] == undefined) {
				
					//Координат в файле нет, ищем координаты по городу, улице и дому
					var myGeocoder = ymaps.geocode(colls[2] + ', ' + colls[3] + ' ' + colls[4]).then(
				
    					function (res) {
        					coordinates = res.geoObjects.get(0).geometry.getCoordinates();
							console.log('Координаты внутри функции ' + coordinates);
    					},
    					
						function (err) {
        					alert('Ошибка');
    					}
						
				)
			
				} else {
				
				//Координаты в файле имеются. Вставляем их из массива в переменную
				coordinates = colls[5] + ',' + colls[6];
				
				}
			
				console.log('Координаты на выходе ' + coordinates);
			
				// Устанавливаем координаты и содержимое балуна
				myPlacemark = new ymaps.Placemark( [coordinates], {
                    // Свойства 
					// балуна
                    balloonContentHeader: '<div style="color:#ff0303;font-weight:bold">'+colls[1]+'</div>',
                    balloonContentBody: '<div style="font-size:12px;"><strong>Адрес:</strong> '+colls[2]+'<br /><strong>Телефон:</strong> '+colls[3]+'</div>'              
                	}, 
					
					{
                    // Опции
					// балуна
                    preset: 'twirl#carIcon'
            	});
			

             	myCollection.add(myPlacemark);
			
				$('#menu').append('<li>'+'<a href="#" onClick="return go_point('+colls[0]+");"+'\">'+colls[1]+'</a></li>');
			
			}
			
		myMap.geoObjects.add(myCollection);
			
		myMap.setBounds(myCollection.getBounds());
			
	}
	
});
Ответить с цитированием
  #2 (permalink)  
Старый 13.08.2014, 15:29
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Два слова: асинхронный запрос.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 13.08.2014, 16:02
Новичок на форуме
Отправить личное сообщение для leonoff Посмотреть профиль Найти все сообщения от leonoff
 
Регистрация: 13.08.2014
Сообщений: 2

Сообщение от Aetae Посмотреть сообщение
Два слова: асинхронный запрос.
Ну елки-палки. Конечно, поскольку запрос асинхронный нужно дождаться обработки результата.
А я код копаю, говорю ж нужна свежая голова. Спасибо (20 слов)

Я думал, что .then() ждет.

Последний раз редактировалось leonoff, 13.08.2014 в 16:25.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Предотвращение выполнения функции ещё раз. xTODx jQuery 9 21.02.2014 13:52
Поиск подходящей функции во время выполнения. Аналог getattr в Python NodeNerd Общие вопросы Javascript 2 23.10.2013 19:50
Остановка выполнения функции .each() TylerDurden Общие вопросы Javascript 6 06.03.2013 02:31
Прерывание выполнения функции 0931454574 jQuery 2 10.08.2011 12:42
Как дождаться полного выполнения функции? San4ezy Events/DOM/Window 13 15.11.2009 19:41