我的响应数据始终为 null,异步意味着什么

当 Flash 从外部源请求数据时,该操作是异步的。这意味着最基本的解释是数据加载在后台并触发你收到时分配给 Event.COMPLETE 的事件处理程序。这可能发生在应用程序生命周期的任何时候。

在你的 URLLoader 上调用 load() 后,你的数据无法立即使用。你必须Event.COMPLETE 附加一个事件监听器,并与那里的响应进行交互。

var request:URLRequest = new URLRequest('http://someservice.com');
var loader:URLLoader = new URLLoader();

loader.addEventListener(Event.COMPLETE, responseReceived);
loader.load(request);

trace(loader.data); // Will be null.

function responseReceived(event:Event):void {
    trace(loader.data); // Will be populated with the server response.
}

trace(loader.data); // Will still be null.

使用 setTimeout 或类似的任何小技巧都无法解决这个问题:

setTimeout(function() {
    trace(loader.data); // Will be null if the data hasn't finished loading
                        // after 1000ms (which you can't guarantee).
}, 1000);