Created
November 5, 2010 17:50
-
-
Save Stray/664521 to your computer and use it in GitHub Desktop.
Workaround for timing issues with onRegister / data providing events
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Inject] | |
public function set requestScreenDataSyncSignalPair(signal:RequestScreenDataSyncSignalPair):void | |
{ | |
_requestScreenDataSyncSignalPair = signal; | |
} | |
override public function onRegister():void | |
{ | |
eventMap.mapListener(eventDispatcher, UserDataSetEvent.DATA_SET_UPDATED, dataSetUpdatedHandler); | |
view.reportRequestedSignal.add(reportRequestedHandler); | |
requestData(Vector.<UserDataVO> as Class, UserDataSetEvent, dataSetUpdatedHandler); | |
} | |
protected function requestData(dataType:Class, dataEventType:Class, responseHandler:Function):void | |
{ | |
var responseSignal:Signal = new Signal(dataEventType); | |
responseSignal.add(responseHandler); | |
requestScreenDataSyncSignalPair.dispatch(dataType, responseSignal); | |
} | |
//-------------------------------------------------------------------------- | |
// | |
// Event Handlers | |
// | |
//-------------------------------------------------------------------------- | |
private function dataSetUpdatedHandler(e:UserDataSetEvent):void | |
{ | |
view.populateWithUserData(e.dataSetVector); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class RequestScreenDataSyncSignalPair extends Signal | |
{ | |
public function RequestScreenDataSyncSignalPair() | |
{ | |
super(Class, Signal); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Inject] | |
public function set requestScreenDataSyncSignalPair(signal:RequestScreenDataSyncSignalPair):void | |
{ | |
_requestScreenDataSyncSignalPair = signal; | |
} | |
private function initSyncSignal():void | |
{ | |
_requestScreenDataSyncSignalPair.add(respondToScreenDataRequestSignal); | |
} | |
private function respondToScreenDataRequestSignal(dataTypeRequired:Class, responseSignal:Signal):void | |
{ | |
if(_dataDeliveredByClassDictionary[dataTypeRequired] == null) | |
{ | |
throw(new IllegalOperationError('I was not expecting data of this type to be requested')); | |
return; | |
} | |
if(_dataDeliveredByClassDictionary[dataTypeRequired] == NULL_ENTRY) | |
{ | |
throw(new IllegalOperationError('Data of this type has not been received yet')); | |
return; | |
} | |
responseSignal.dispatch(_dataEventsByDataClassDictionary[dataTypeRequired]); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment