我的响应数据始终为 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);