我的響應資料始終為 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);