Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.10.2009, 14:30
kostepanych вне форума Посмотреть профиль Отправить личное сообщение для kostepanych Найти все сообщения от kostepanych
  № 1  
Ответить с цитированием
kostepanych

Регистрация: Oct 2009
Сообщений: 4
Question Как разрулить множественные SOAP запросы для инициализации колекшена

Доброго времени суток,

Мне нужно проинициализировать ArrayCollection объектами, значения филдов которого получаются через СОАП запросы (функция getUdfValuePrj):

Код:
 for (var i:int=0; i < data.length; i++)
 {
  var task:Task=new Task();
  task.laborio = getUdfValuePrj(data[i].id, LABORIOUSNESS);
 }
 tempTaskArray.addItem(task);
Вот инициализация Вэбсервиса:

Код:
 private function initWebServices(wsdl:String):void
     {
  _udfWs = new WebService();
  _udfWs.wsdl = wsdl;
  _udfWs.getTaskUDFValue.addEventListener("result",
  getTaskUDFValueResult);
  _udfWs.getTaskUDFValue.addEventListener("fault", handleFault);
  _udfWs.loadWSDL();
 }
Собственно говоря вопрос, какими должны быть функции getUdfValuePrj (для СОАП запроса) и getTaskUDFValueResult (для получения requesta)? Или как это можно сделать по другому?

Пытался сам что-то соображать, получилась такая ересь:

Код:
private function getTaskUDFValueResult(event:ResultEvent):
 {
  _udfValue = event.result as String;
 }
 
private function getUdfValuePrj (taskId:String, udfCaption:String):void
 {
  _udfValue = "Loading...";
  _udfWs.getTaskUDFValue (taskId,udfCaption);
  while (_udfValue == "Loading...")
  {
  }
  return _udfValue;
 }
Но это: 1) Криво; 2) Не работает.

Старый 21.10.2009, 21:24
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
В разделе Flex спросите.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 21.10.2009, 21:48
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
1. Читать справку:
http://livedocs.adobe.com/flex/3/lan...ebService.html
2. Загрузка в AS3 асинхронная. Соответственно, подписаться на события и обработать их.
3. Если использование фреймворка не является жизненной необходимостью, то лучше использовать URLLoader вместо WebService.
__________________
Hell is the possibility of sanity

Старый 27.10.2009, 15:38
kostepanych вне форума Посмотреть профиль Отправить личное сообщение для kostepanych Найти все сообщения от kostepanych
  № 4  
Ответить с цитированием
kostepanych

Регистрация: Oct 2009
Сообщений: 4
1. Справку читал.
2. А вы мой код смотрели? Вообще-то я обрабатываю событие "result". Но код получается не очень адекватный.
3. А смысл? В любом случае для каждого параметра нужно ожидать событие окончания загрузки.

Старый 27.10.2009, 17:05
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от kostepanych Посмотреть сообщение
1. Справку читал.
Код AS3:
while (_udfValue == "Loading...")
  {
  }
И где вы в спавке видели такой вариант ожидания ответа от сервера?

Цитата:
Сообщение от kostepanych Посмотреть сообщение
2. А вы мой код смотрели? Вообще-то я обрабатываю событие "result". Но код получается не очень адекватный.
Ваш код смотрел... да. Ну ничего вы не обрабатываете, следуя вашей логике вообще не понятно зачем вы обработчики добавили...

Цитата:
Сообщение от kostepanych Посмотреть сообщение
3. А смысл? В любом случае для каждого параметра нужно ожидать событие окончания загрузки.
Помоему преимущества использования билт-ин класса плеера против какого-то пользовательского класса очевидны:
- этот класс не встраивается в SWF. (меньше размер файла)
- его методы и свойства реализованы на C и не требуют компиляции при загрузке SWF. (быстрее работает)
__________________
Hell is the possibility of sanity

Старый 27.10.2009, 19:13
kostepanych вне форума Посмотреть профиль Отправить личное сообщение для kostepanych Найти все сообщения от kostepanych
  № 6  
Ответить с цитированием
kostepanych

Регистрация: Oct 2009
Сообщений: 4
Цитата:
Ну ничего вы не обрабатываете
А как же?

Код AS3:
private function getTaskUDFValueResult(event:ResultEvent):
 {
  _udfValue = event.result as String;
 }
Смысл моего вопроса заключается в том, как проинициализировать не бессмысленный филд, а каждый элемент task.laborio для создания списка tempTaskArray.

Я нашел примеры, где осуществляется один запрос, а в обработчике мы просто инициализируем то, что надо, например так:
Код AS3:
private function getAvailableBooksResult(event:ResultEvent):void 
{
   dgGrid.dataProvider = event.result;
}
Но что делать, когда таких запросов много? Как указать в моем случае в обработчике, что я хочу проинициализировать конкретный элемент списка tempTaskArray?

Старый 27.10.2009, 19:19
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 7  
Ответить с цитированием
†‡Paladin‡†

Регистрация: Nov 2005
Сообщений: 1,058
Написать класс, который эти запросы будет выстраивать в очередь и знать с чем он в данный момент работает и для кого ждет данных.

Старый 28.10.2009, 10:17
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от kostepanych Посмотреть сообщение
Смысл моего вопроса заключается в том, как проинициализировать не бессмысленный филд, а каждый элемент task.laborio для создания списка tempTaskArray.
Обобщаю смысл Вашего вопроса: как соотнести пришедшие данные с адресатом.
Вариантов всего два: либо адрес назначения содержится в ответе, либо клиент знает куда распихивать пришедшие данные.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 03.11.2009, 13:20
kostepanych вне форума Посмотреть профиль Отправить личное сообщение для kostepanych Найти все сообщения от kostepanych
  № 9  
Ответить с цитированием
kostepanych

Регистрация: Oct 2009
Сообщений: 4
Цитата:
Написать класс, который эти запросы будет выстраивать в очередь и знать с чем он в данный момент работает и для кого ждет данных.
А можно где-нибудь посмотреть примеры подобных манипуляций?

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:35.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.