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

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

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

Регистрация: Jun 2009
Сообщений: 64
По умолчанию Ожидать завершения функции

Подскажите, пожалуйста - есть функция
Код AS3:
public function getVariableValue(Session:Number) {
var VariableValue:Number=0;
_data_provider.request(DataProvider.GET_VARIABLE, {
  params:{key:2065, session: Session},
  onComplete: function(data) {
      trace(Session+"- "+data);
      VariableValue=data;
    }
  });
return VariableValue;
}
где-нить в коде я её вызываю - _data_accessor.getVariableValue(1) - чтоб вывести, например, на экран, но есть большой шанс, что функция вернет мне 0 вместо положенного значения, т.к. событие onComplete наступает позднее, чем return VariableValue.
как с этим бороться?

Старый 16.07.2009, 23:35
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 2  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
ну дождаться события, а там уже вашу гетВариабл.

А пример, кода, если честно не читабелен, чуть более чем полностью.
Бред какой то... уж извините.

Старый 16.07.2009, 23:52
LA_ вне форума Посмотреть профиль Отправить личное сообщение для LA_ Найти все сообщения от LA_
  № 3  
Ответить с цитированием
LA_

Регистрация: Jun 2009
Сообщений: 64
нечитаем из-за форматирования?
попробуем снова:
Код AS3:
public function getVariableValue(Session:Number) {
  var VariableValue:Number=0;
  _data_provider.request(DataProvider.GET_VARIABLE, {
       params:{key:2065, session: Session},
       onComplete: function(data) {
           trace(Session+"- "+data);
           VariableValue=data;
       }
  });
return VariableValue;
}
_data_provider.request - не моя функция. а результат своей работы она возвращает в виде onComplete: function(data). как можно дождаться результата её работы?

Добавлено через 17 минут
хм. в голову пришла след. идея - завести еще одну переменную:
var Completed:Boolean=false;
при наступлении события делать её true,
а перед return VariableValue - бесконечный цикл проверяющий значение Completed.
Или есть более правильные способы?

Старый 17.07.2009, 00:17
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 4  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
bad choiсe, newbie!
я что то вообще не пойму что такое этот онКомплит...
Это слушатель или что...

Я собсна залез в хелп, понял что вы какой то свой видимо написали Дата Провайдер. Скорее всего для запроса данных с сервера(Вконтакте??). Так вот вам нужно сначала дождаться загрузки, а только потом уже вытаскивать данные и идти дальше(слать события, вызывать методы и прочее).

ну это если я правильно понял.

Старый 17.07.2009, 00:20
musat вне форума Посмотреть профиль Отправить личное сообщение для musat Найти все сообщения от musat
  № 5  
Ответить с цитированием
musat
 
Аватар для musat

Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
Да, DataProvider для запроса данных с ВКонтакте API. Кстати, можно было просто посмотреть, как это сделано в исходниках чата

Как вариант, написать callback-функцию onGetVar:
Код AS3:
public function getVariableValue(Session:Number, onGetVar:Function) {
  var VariableValue:Number=0;
  _data_provider.request(DataProvider.GET_VARIABLE, {
       params:{key:2065, session: Session},
       onComplete: function(data) {
           trace(Session+"- "+data);
           onGetVar(data);
       }
  });
}
 
public function onGetVar(data:String):void {
  trace(data);
}


Последний раз редактировалось musat; 17.07.2009 в 00:26.
Старый 17.07.2009, 00:25
LA_ вне форума Посмотреть профиль Отправить личное сообщение для LA_ Найти все сообщения от LA_
  № 6  
Ответить с цитированием
LA_

Регистрация: Jun 2009
Сообщений: 64
ramshteks, нет, это не я написал dataprovider. такой идет в комплекте к чату вконтакте.

musat, спасибо. только мне теперь нужна ваша помощь, чтоб понять, как этим воспользоваться.
моя задача - выполнив _data_accessor.getVariableValue(1), получить значение функции, чтоб потом вывести его (значение) на экран.
понятно, что можно это сделать, например, в onGetVar (как вы сейчас делаете там trace этого значения). но так будет некрасиво.

поскольку вы сейчас передаете аргумент onGetVar моей функции то, видимо, как то это значение можно прочитать. но как? ))


Последний раз редактировалось LA_; 17.07.2009 в 00:43.
Старый 17.07.2009, 01:03
musat вне форума Посмотреть профиль Отправить личное сообщение для musat Найти все сообщения от musat
  № 7  
Ответить с цитированием
musat
 
Аватар для musat

Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
Что-то я перемудрил, так лучше:
Код AS3:
public function getVariableValue(Session:Number, onGetVar:Function) {
  var VariableValue:Number=0;
  _data_provider.request(DataProvider.GET_VARIABLE, {
       params:{key:2065, session: Session},
       onGetVar);
}
 
public function onGetVar(data:String):void {
  trace(data);
}

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

Регистрация: Jun 2009
Сообщений: 64
musat, а все-таки как этим пользоваться? ))

Старый 17.07.2009, 17:47
musat вне форума Посмотреть профиль Отправить личное сообщение для musat Найти все сообщения от musat
  № 9  
Ответить с цитированием
musat
 
Аватар для musat

Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
LA_, в смысле "как пользоваться"? В функцию onGetVar передается параметр data, т.е. значение полученной контактовской переменной.

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

Регистрация: Jun 2009
Сообщений: 64
Цитата:
в смысле "как пользоваться"?
мне нужно вывести полученное значение, например, в текстовое поле.
как мне получить значение data в коде (за пределами DataAccessor), т.е. вне функций getVariableValue и onGetVar? или предлагается onGetVar разместить не в DataAccessor?

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

Теги
ожидание , результат , функция
Опции темы
Опции просмотра

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

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


 


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


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