Асинхронный PureMVC в Python - PullRequest
       21

Асинхронный PureMVC в Python

3 голосов
/ 10 августа 2010

Взяв следующий код из здесь , из сокращенной версии внизу, существует этот прокси:

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 Ответ

0 голосов
/ 16 февраля 2011

Ваш вопрос действительно интересный.Я только что изучил PureMVC, и это только моя мысль, не доказанная.

Как насчет использования Notifier в puremvc.patterns.observer?Или гораздо более простым способом, в вашей функции асинхронного извлечения данных, отправьте уведомление, когда процесс будет завершен :). Этот способ звучит намного лучше PureMVC-way: связь посредством уведомлений.Думаю, единственная проблема - убедиться, что механизм уведомлений поточно-ориентирован.

Еще одна идея.Вы можете попробовать идею Utility - AS3 / Startup Manager .

...