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