Анонимные функции доступа к локальным переменным [ActionScript - Flex 3.5] - PullRequest
1 голос
/ 09 июня 2010

У меня возникла ситуация с моим внешним интерфейсом actionscript / flex.

 for each (var sym:String in ["A","B","C"]) {

                const handler = function (data:Object):void { Alert.show(sym); }                

                asyncCallback(handler);

   }

Я ожидаю иметь 3 окна оповещений, содержащие A, B и C. Но фактический результат - 3 окна оповещений, все показывающиеC!

1 Ответ

1 голос
/ 09 июня 2010

Это немного сложно. Вы должны обернуть свое создание обработчика в другую функцию.

попробовать:

for each(var sym:String in ["A","B","C"]) {
    function createHandler(val:String):Function {
        var handler = function(data:Object):void { 
            trace(val); 
        }
        return handler;
    }
    var handler:Function = createHandler(sym);
    asyncCallback(handler);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...