我的动作脚本/弹性前端有这种情况。
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!
答案 0 :(得分:1)
这个有点棘手。您必须将处理程序创建包装在另一个函数中。
尝试:
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);
}