Как программист PHP, я очень привык к тому, что поток программы идет по строке, если я вызываю функцию1(), которая должна вернуть некоторое значение. Я знаю, что программа не будет продолжаться до тех пор, пока эта функция возвращает.От синхронного потока до асинхронной дилеммы потока
Теперь им разрабатывает приложение AS3 с помощью AIR, мне нужно, чтобы загрузить некоторые изображения, если некоторые условия выполнены, не знаю, сколько, так что им, используя монетой это:
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...
}
}
}
Как вам можно увидеть im, просто сравнивая каждый элемент с каждым массивом (newData_array и старыйData_array). Если условие выполнено, мне нужно что-то загрузить, для этого я использую URL-адрес, и, как вы знаете, эта функция асинхронна, добавление слушателя, событие будет запущено, когда загрузка будет завершена, проблема очень ясна, так как urlloader не остановит цикл for (как я ожидал бы на PHP-подобном языке), я просто собираюсь загрузить кучу изображений, создавая в то же время катастрофу, потому что я не буду знать, когда ее сохранять. Поэтому мне нужно использовать любой слушатель, но, поскольку я не очень привык к подобным процедурам, я довольно приставал к ним.
Я не заинтересован в процедурах сохранения на диске, эта часть в значительной степени выполнена, я просто хочу понять, как я должен структурировать этот алгоритм, чтобы сделать эту работу.