Асинхронный PureMVC в Python
Если взять следующий код отсюда, из сокращенной версии внизу, существует этот прокси:
class DataModelProxy(puremvc.patterns.proxy.Proxy):
NAME = "DataModelProxy"
def __init__(self):
super(DataModelProxy, self).__init__(DataModelProxy.NAME, [])
self.realdata = Data()
self.sendNotification(AppFacade.DATA_CHANGED, self.realdata.data)
def setData(self, data):
self.realdata.data = data
print "setData (model) to", data
self.sendNotification(AppFacade.DATA_CHANGED, self.realdata.data)
Цитируя отсюда из документации PureMVC Python, он говорит:
Прокси-сервер может просто управлять ссылкой на локальный объект данных, и в этом случае взаимодействие с ним может включать установку и получение его данных синхронным способом.
Прокси-классы также используются для инкапсуляции взаимодействия приложения с удаленными службами для сохранения или извлечения данных, и в этом случае мы применяем асинхронную идиому; установка данных (или вызов метода) на прокси-сервере и прослушивание уведомления, которое будет отправлено, когда прокси-сервер получит данные из службы.
Если это так, как я могу заставить свой прокси-сервер выполнять асинхронно, когда у меня есть дорогостоящие и трудоемкие данные для получения?
1 ответ
Ваш вопрос действительно интересный. Я только что изучил PureMVC, и это только моя мысль, не доказанная.
Как насчет использования Notifier в puremvc.patterns.observer? Или гораздо более простым способом, в вашей функции асинхронного извлечения данных, отправьте уведомление, когда процесс завершится:). Этот способ звучит намного лучше PureMVC-way: общение посредством уведомлений. Думаю, единственная проблема заключается в том, чтобы механизм уведомлений был поточно-ориентированным.
Еще одна идея. Вы можете попробовать идею http://trac.puremvc.org/Utility_AS3_StartupManager.