Apache flex 如何从同一点保持并继续FOR-LOOP
嗨,伙计们,我得到了一个for/foreach循环,它调用其中的一个函数。问题是被调用的函数在循环再次进行之前并没有完成它的工作/ 这是我的密码:Apache flex 如何从同一点保持并继续FOR-LOOP,apache-flex,actionscript-3,for-loop,facebook-fql,Apache Flex,Actionscript 3,For Loop,Facebook Fql,嗨,伙计们,我得到了一个for/foreach循环,它调用其中的一个函数。问题是被调用的函数在循环再次进行之前并没有完成它的工作/ 这是我的密码: private function ziv(result:Array,fail:Object):void { var i:uint = result.length; for each(var f:Object in result) {
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);
}
正如您所见,我想在MYFRIENDS函数中添加一个项(notfriend),循环中定义了“notfriend”,但在“MYFRIENDS”函数完成加载时,该项已经更改为下一项,即使我最初引用的是上一项。
是否有一种方法可以在“myfriends”函数完成加载之前保持FORloop
我想在“myfriends”函数中使用Eventlistener,但是我该如何停止\保持循环?我所知道的是BREAK,它破坏FOR循环,CONTINUE,它从下一次迭代开始继续循环
10倍多,我真的在这里刹车 也许可以考虑不使用for循环,而手动执行循环(下面的示例使用递归) 即
private var index=0;
私有函数processArray(){
ProcessArrayItem(数组[索引])
}
专用函数进程项目(obj){
//完成后,递归调用函数
索引++;
if(indexU)在某些情况下可以使用递归函数
像
私有函数setZoom():void
{
var zoomLevel:Number=新编号(myPanel);
如果(zoomLevel!=100)
{
如果(缩放级别<100)
{
myPanel.zoomIN();
setZoom();
}
其他的
{
myPanel.zoomOUT();
setZoom();
}
}
}
但在某些情况下,我们不能这样做
只有一种解决方案,我们才能通过
使用函数
setTimeout()或callLater()
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])
}
private function setZoom():void
{
var zoomLevel:Number = new Number(myPanel);
if(zoomLevel != 100)
{
if(zoomLevel < 100)
{
myPanel.zoomIN();
setZoom();
}
else
{
myPanel.zoomOUT();
setZoom();
}
}
}