Новая версия:
Спасибо за ваш ответ. Извините, я начинаю снова:
импорт (. * Для тестирования):
mx.events.*
mx.soap.*
mx.rpc.*
mx.controlls.*
creationCompleteHandler () вызывается при запуске программы с creationComplete:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="creationCompleteHandler(event)">
..
В этой функции я запрашиваю данные из таблицы MySQL modul1. module1Service1.getAllModule1_where был автоматически создан из представления Flex Design. Это сервис для общения с PHP / MySQL. Эта функция работает отлично. Идентификатор 2735 в параметре жестко задан для тестирования.
MySQL Table modul1 выглядит так:
ID_MODUL1(PK) NAME
1 Modulx
2 Moduly
3 Modulz
protected function creationCompleteHandler(event:FlexEvent):void {
getAllModule1_whereResult2.token = module1Service1.getAllModule1_where(2735);
getAllModule1_whereResult2.addEventListener(ResultEvent.RESULT,waitForResult1);
}
Когда результат готов, вызывается waitForResult1 (событие: ResultEvent). Теперь мне нужно сделать новый вызов MySQL. В этой функции я хочу перебрать строки результатов MySQL из таблицы modul1 и извлечь соответствующие данные из таблицы MySQL modul1_content, где modul1_content.id_modul (FK) = modul1.id_modul1 (PK). Переменная id_module1 в цикле устанавливается с правильным идентификатором.
Таблица modul1_content выглядит так:
ID_MODUL1_CONTENT(PK) ID_MODUL1(FK) CONTENT
1 1 text...
2 1 text...
3 3 text...
4 2 text...
//get module2 from module1_id
public function waitForResult1(event:ResultEvent):void {
for(var i:int = 0; i < getAllModule1_whereResult2.lastResult.length; i++){
id_module1 = getAllModule1_whereResult2.lastResult[i].id_modul1;
c = new CallResponder();
c.token = module2Service.getAllModule2_where( id_module1 );
c.addEventListener(ResultEvent.RESULT,getListener2(i,getAllModule1_whereResult2.lastResult.length));
}
}
В каждой итерации вызывается getListener2 (). На последней итерации writeBook (module1, module2) вызывается. writeBook работает нормально, но отсутствует параметр module2. В каждой итерации я хочу добавить результат из MySQL в публичную переменную module2 [i]. я настроен. 0,1,2, но module2 [0] и module2 [1] пустые, module2 [2] верный. Существуют строки MySQL для i = 0 и i = 1.
public function getListener2(i:Number, max:Number):Function {
return function(e:ResultEvent):void{
module2[i] = c.lastResult;
Alert.show( c.lastResult + " " + i);
//all data loaded, call writeBook
if(i == max -1){
writeBook( module1, module2 );
}
};
}