作为一名PHP程序员,我非常习惯于这样一个事实,即如果我调用函数function1()必须返回一些值,我会知道该程序将不会继续,该函数返回。从同步流动到异步流动困境
现在,即时通讯使用AIR开发AS3的应用程序,我需要下载一些图片,如果某些条件得到满足,不知道有多少,所以使用对于这样的IM:
for (var w:int=0; w < newData_array[2]['content'].length; w++) {
for (var j:int=0; j < oldData_array[2]['content'].length; j++) {
if((oldData_array[2]['content'][j]['id'] == newData_array[2]['content'][w]['id']) && (oldData_array[2]['content'][j]['last_mod'] != newData_array[2]['content'][w]['last_mod'])){
//need to download a image...
}
}
}
正如你可以看到即时比较每个阵列中的每个元素(newData_array和oldData_array)。如果条件符合,我需要下载一些东西,因为我使用的是URLloader并且你知道这个函数是异步的,增加一个监听器,当下载完成时会触发一个事件,问题非常清楚,因为urlloader不会停止for循环(就像我期望的PHP语言一样),我只是在下载一组图像的同时创建一个灾难,因为我不知道何时保存。所以我需要使用任何意思的听众,但因为我不习惯这种程序,我非常郁闷。
我对保存到磁盘例程不感兴趣,该部分已经完成了,我只是想了解如何构造这个算法来完成这个工作。