Я создаю дерево mx: с помощью flex, и его поставщик данных является коллекцией массивов.Кроме того, эта коллекция массивов устанавливается с помощью базы данных.Этот процесс обрабатывается функцией прослушивания событий.База данных возвращает данные в массив массива асинхронно.И это проблема в том, что при запуске приложения Flex коллекция массивов не инициализируется полностью.Следовательно, mx: tree является неполным.Вот сегмент кода:
protected function populateTreeNode(node:Object):void
{
if (node != null && node["className"] != "InventoryCategory") return;
var categoryId:Number = 0;
if (node != null)
categoryId = node["id"];
DAOUtil.loadAll("InventoryCategory", EventUtil.handleWithArgs(popoluateTreeNodeHandler, [node, "InventoryCategory"]), "categoryId", categoryId.toString());
DAOUtil.loadAll("InventoryItem", EventUtil.handleWithArgs(popoluateTreeNodeHandler, [node, "InventoryItem"]), "categoryId", categoryId.toString());
}
protected function popoluateTreeNodeHandler( event : Event , nodeCategory:Object, typeName:String): void
{
var items:Array = DAOUtil.getArray(event, typeName);
items = LangUtil.fromNameField(items);
if (nodeCategory != null)
nodeCategory["children"] = items;
else
inventoryArray.addAll(new ArrayCollection(items));
for each (var item:Object in items) populateTreeNode(item);
}
Эта функция пытается рекурсивно инициализировать коллекцию массивов и в конце функции populateTreeNodeHandler полностью инициализируется.Но когда запускается приложение flex, оно иногда бывает неполным.Есть ли решение этой проблемы?