![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
fara86 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.6.2009 Репутация: нет Всего: нет |
есть пару методов возращяющее название времен года и месяцы
мне нужно получить название времени года и какие у него месяцы делаю так
но, получаю к примеру лето зима весна осень июнь июлю ..................... хоть и у меня getMonth() вызывается в цикле getSeason() но все равно пока весь getSeason() не выполнится, до getMonth() дело не доходит, где ошибка у меня? |
|||
|
||||
andyhomes |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 14.7.2009 Репутация: 2 Всего: 2 |
Помедитируйте на досуге про однопотоковую среду (JS), асинхронные вызовы, DeferredCommand (прицепом).
|
|||
|
||||
fara86 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.6.2009 Репутация: нет Всего: нет |
Да я понял, что это с синхронными и асинхронными вызовами связанно, но как применить к моей задаче, тока такой вариант в голову лезет=) Это сообщение отредактировал(а) fara86 - 6.8.2009, 14:47 |
|||
|
||||
fara86 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.6.2009 Репутация: нет Всего: нет |
т.е. мне нужно применить синхронный вызов правильно?
Это сообщение отредактировал(а) fara86 - 7.8.2009, 08:24 |
|||
|
||||
andyhomes |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 14.7.2009 Репутация: 2 Всего: 2 |
Так и работает, по-другому - никак. Ну, а чтобы реализовать то, что вы хотите... можно, например, использовать очередь для сизонов и инициировать обработку следующего в методе получения месяцев (в колбэке, естественно). |
|||
|
||||
fara86 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.6.2009 Репутация: нет Всего: нет |
А чуть подробнее нельзя? А что gwt не поддерживает синхронные вызовы? Я провел тестик маленький объявляю массив строк
затем в методе
вывожу res[0]; и после опять вывожу
но на консоли выводится null Лето т.е. получается доходит дело до onSuccess() и не получив ответа он продолжает выполнять программу, а как ответ пришел в callback то выводится на экран лето Это сообщение отредактировал(а) fara86 - 7.8.2009, 08:50 |
||||||
|
|||||||
andyhomes |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 14.7.2009 Репутация: 2 Всего: 2 |
GWT, в общем-то, тут не причем. Он только компилирует ваш код на Java в JavaScript. Нужно понимать как работает AJAX. А работает он, грубо говоря, через XmlHttpRequest (XHR). JS в браузере (однопотоковая среда) может посредством XHR отправить запрос, но время его исполнения не известно и может быть долгим, и в случае синхронного вызова JS бы просто простаивал, ожидая завершения запроса. Поэтому XHR-у сообщаются JavaScript-callback-методы, которые он (XHR) вызывает в окончании обработки запроса. Зато, паралельно с выполнением AJAX-запрос(а/ов), JS может продолжить свою работу... Короче, синхронность сами реализуйте. Подумайте, в свете новых представлений, как это можно сделать. Ну очередь - это один вариант, флаги какие-нибудь можно прикрутить, таймеры... Можно, конечно и с другой стороны подойти - максимально использовать выгоды AJAX. |
|||
|
||||
fara86 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.6.2009 Репутация: нет Всего: нет |
мда нет синхронности помоему это минус большой, т.е. если допустим пользователь логинится, еше не получив ответа он выполняется другая часть кода, глупо это, а реализовывать свое это не изящно, но как вариант пойдет=(
|
|||
|
||||
andyhomes |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 14.7.2009 Репутация: 2 Всего: 2 |
Это данность.
Это "кривые руки".
Глупо - делать выводы, не изучив достаточно технологию. Смотрите примеры, думайте, изучайте... |
||||
|
|||||
fara86 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.6.2009 Репутация: нет Всего: нет |
Тогда у всех программистов кривые руки, так как нет идеального кода=)
если вы знаете изящное решение моей проблемы может поможете, а то сказать типо смотри доки и т.д каждый может сказать |
||||
|
|||||
andyhomes |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 14.7.2009 Репутация: 2 Всего: 2 |
Задачу опишите.
PS И не надо вот это вот разводить: выдергивать фразы из контекста, обобщать... На Земле милион AJAX-разработчиков, и никто не испытывает проблем с асинхронными методами. И вы станете милион первым, как только разберетесь в предмете. |
|||
|
||||
fara86 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.6.2009 Репутация: нет Всего: нет |
Я не спорю с этим, но шас не могу разобраться, не до понимаю, вот и прибегаю к помощи из вне=) суть такая к примеру из базы дергается нащвание времени года, затем на основе результата дергаются месеца относящиеся ко времени года и нужно это отобразить но получается чушь смотрите первое сообщение как мне нужно! |
|||
|
||||
andyhomes |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 14.7.2009 Репутация: 2 Всего: 2 |
Это что, курсовая/тестовая работа? Если нет, то предлагаю переместиться на уровень выше (в описании задачи)... А то, похоже, мы имеем дело с какой-то кривой и тупиковой веткой возможных решений неизвестной нам (кроме вас) задачи. Ну, а если да... Заведите переменную, например, idx - содержит индекс обрабатываемого элемента массива сезонов. Получив сезоны вызываете функцию получения месяцев для первого элемента массива сезонов (idx=0) Получив месяцы, в колбек-методе делаете вывод информации, инкремент idx и новый вызов получения месяцев... Ну, естественно, нужно проверять границы индекса. |
|||
|
||||
fara86 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.6.2009 Репутация: нет Всего: нет |
Вроде нормальный примерчик=)
ладно тогда вот такой вот
сначало происходит return res а потом уже тока ответ приходит, каким образом сделать чтоб не выполнялся return res пока не придет ответ от сервера? Может не rpc использовать, а другое чтонить? Это сообщение отредактировал(а) fara86 - 11.8.2009, 07:40 |
|||
|
||||
fara86 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.6.2009 Репутация: нет Всего: нет |
Ну что ни кто не сталкивался с подобными проблемами?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |