Как удерживать и продолжать FOR-LOOP с того же места - PullRequest
0 голосов
/ 06 сентября 2011

Привет, ребята, у меня есть цикл for / foreach, который вызывает функцию внутри него.Проблема заключается в том, что вызываемая функция не завершает свою работу до повторного запуска цикла /

Вот мой код:

            private function ziv(result:Array,fail:Object):void
        {
            var i:uint = result.length;
            for each(var f:Object in result)
            {
                var item:Object = f;
                notfriend=item;
                FacebookDesktop.fqlQuery("SELECT uid1, uid2 FROM friend WHERE uid1 = me() AND uid2 = "+item.id,myfriends);

            }
        }

        private function myfriends(result:Object,fail:Object):void
        {
            if (result.length != 0)
            myfriend.addItem(notfriend);
        }

Как видите, я хочу добавить элемент(notfriend) в функции MYFRIENDS, "notfriend" определяется внутри цикла, но к тому времени, когда функция "MYFRIENDS" заканчивает загрузку элемента, он уже переходит к следующему элементу, даже если я первоначально ссылался на предыдущий элемент.Есть ли способ удерживать FORloop до завершения загрузки функции "myfriends".

Я хотел использовать Eventlistener для функции "myfriends", но что мне делать, чтобы остановить \ удержать цикл?все, что я знаю, это BREAK - который разрушает FOR-LOOP и CONTINUE - которые продолжают цикл со следующей итерации.

10x много, я действительно теряю голову здесь!

Ответы [ 2 ]

0 голосов
/ 06 сентября 2011

U может использовать рекурсивную функцию в некоторых случаях

как

 private function setZoom():void
        {
            var zoomLevel:Number = new Number(myPanel);
            if(zoomLevel != 100)
            {
                if(zoomLevel < 100)
                {
                    myPanel.zoomIN();
                    setZoom();
                }
                else
                {
                    myPanel.zoomOUT();
                    setZoom();
                }
            }
        }

но в некоторых случаях мы не можем этого сделать

только одним решением, которого мы можем достичь

с использованием Таймер Функции

setTimeout () или callLater ();

0 голосов
/ 06 сентября 2011

Может быть, посмотрите, что цикл не используется, и выполните цикл вручную (пример ниже использует рекурсию)

т.е.

private var index=0;
private function processArray() {
  proccessArrayItem(array[index])
}
private function proccessArrayItem(obj) {

   //after complete then call function recursively
   index++;
   if (index<array.length) proccessArrayItem(array[index])
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...