Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.08.2016, 10:19
Кандидат Javascript-наук
Отправить личное сообщение для vah-smile Посмотреть профиль Найти все сообщения от vah-smile
 
Регистрация: 31.10.2009
Сообщений: 116

Приостановить скрипт до получения ответа
При работе с Google Maps возникла проблема: JavaScript работает быстрее чем запросы к Google Maps. Как можно приостановить скрипт до получения ответа?

for (var i=0; i<=5; i++)
{
  alert (i); // выдает поочередно: 1, 2, 3, 4, 5

  directionsService.route(request, function(response, status) 
  { 
    alert (i); // сразу выдает 5, а нужно 1, 2, 3, 4, 5
  });
}
Ответить с цитированием
  #2 (permalink)  
Старый 07.08.2016, 10:28
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

попробуйте ,что выдаст
alert(response)

ответ то там,
Ответить с цитированием
  #3 (permalink)  
Старый 07.08.2016, 11:29
Кандидат Javascript-наук
Отправить личное сообщение для vah-smile Посмотреть профиль Найти все сообщения от vah-smile
 
Регистрация: 31.10.2009
Сообщений: 116

Сообщение от vadim5june Посмотреть сообщение
попробуйте ,что выдаст
alert(response)

ответ то там,
alert выдал [object Object]
Ответить с цитированием
  #4 (permalink)  
Старый 07.08.2016, 15:16
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

vah-smile,
Тут вообще дело походу не в скорости. То, что у тебя сразу 5 выдается говорит о том , что ты пропустил раздел 'Замыкания'
Ответить с цитированием
  #5 (permalink)  
Старый 07.08.2016, 18:24
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

vah-smile,
for (var i = 0; i <= 5; i++) {
	(function (i) {
		directionsService.route(request, function (response, status) {
			alert(i);
		});
	}(i));
}
Ответить с цитированием
  #6 (permalink)  
Старый 08.08.2016, 11:18
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от vah-smile
JavaScript работает быстрее чем запросы к Google Maps
Не то слово. Условно говоря жаба скрипт со скоростью света, а запросы ползут со скоростью звука. alert() тупо останавливает жабу как женщина - коня и поэтому счетчик показывает текущее значение. А потом он показывает последнее, поскольку i к тому времени уже давно достигло своего максимума и даже 100500 раз заюзалось другими функциями в том же скопе. То есть ты напиши вообще _после_ своего цикла i='nichesi' и в алерте получишь nichosi. Дошло?

Короче, тебе нужен калбек.
Ответить с цитированием
  #7 (permalink)  
Старый 08.08.2016, 11:20
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Как господин Rise изобразил - тебе ТС все равно не надо. Там копируется твое i внутри функции, но ты просто не знал как делать и поэтому начал канонично с for. А тебе вообще фор не нужен.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как скопировать скрипт с переадресующей страници ramisa Элементы интерфейса 9 09.07.2013 23:59
Скрипт в скрипт :) Sakyra Общие вопросы Javascript 6 22.05.2013 09:58
Не работает скрипт :( VladimirV Javascript под браузер 5 21.12.2010 14:26
А как зделать скрипт, чтобы например скрипт 1 заменялся скриптом 2? yura371 Общие вопросы Javascript 3 06.01.2009 22:40
добавление окошка в скрипт подсчета слов Гость Общие вопросы Javascript 10 11.03.2008 17:07