2013-08-15 2 views
1

У меня есть простой MVC, реализованный в Javascript. Просмотр только делает одно: фиксирует координаты щелчков мыши. Всякий раз, когда пользователь нажимает, View сохраняет значения координат в буфере FIFO и уведомляет контроллер об этом новом событии. В результате уведомления контроллер считывает координаты и запрашивает Модель о некоторых данных, которые являются специфическими для этих координат. Эти данные - простое число.Асинхронное обновление модели в MVC

Однако у Модели фактически нет данных. Модель запрашивает удаленный сервер для этой информации. Когда информация (асинхронно) поступает, Модель сохраняет информацию в постоянном буфере и уведомляет Контроллера, который должен обновить представление на основе этой новой информации.

К сожалению, весь буфер в Модели должен быть обработан, чтобы View мог быть обновлен (просмотр не может быть обновлен только на основе последних данных). Я сомневаюсь, что произойдет, если новые данные поступают асинхронно, когда буфер в Модели читается, чтобы обновить представление? Моя первая мысль заключалась в том, чтобы создать одну полную стабильную копию базы данных для каждого обновления View.

ответ

1

У JavaScript нет эквивалента «ожидание», как на других языках. Я считаю, что мы увидим ключевое слово 'yield', которое поможет нам в будущем. В настоящее время многие кодеры полагаются на обещания или отложенные шаблоны.

jQuery имеет встроенный встроенный детектив. http://api.jquery.com/category/deferred-object/ Chrome и FF начали добавлять его. https://code.google.com/p/v8/issues/detail?id=2355

Должен признать, что это не лучший ответ, я могу лишь указать на некоторые незначительные проблемы.

  • JQuery Ajax вызов может быть сделано синхронно, проверьте Params
  • тайм-аут, сон это не ответ, как он блокирует
  • Отложенный не всегда ответ, особенно если вы не любите «то», ' когда «методы обратного вызова».
Смежные вопросы