2013-02-18 3 views
0

Я загружаю несколько файлов, используя javascript.Как обновлять сообщения для загрузки файлов с использованием магистрали?

После загрузки файлов мне нужно запустить несколько функций обработки.

Из-за времени обработки, которое требуется, мне нужен интерфейс спереди, говорящий пользователю о предполагаемом времени, оставшемся от всего процесса.

В принципе у меня есть 3 функции:

  1. /загрузки - это конечная точка для загрузки файлов
  2. /генерировать/метаданные - это следующая конечная точка, которая должна быть запущена после того, как/закачивать
  3. /process - это последняя конечная точка. Должно быть вызвано после/генерации/метаданных

Вот как я ожидаю, что экран будет выглядеть в основном.

enter image description here

такую ​​информацию, как процент оставшихся и времени осталось должно отображаться.

Однако я не уверен, разрешать ли сервер предоставлять информацию, или я делаю оценку хакерами исключительно с помощью javascript.

мне также нужно будет обновлять экран как говорить пользовательские сообщения, такие как

«в настоящее время загрузки»

, если я нахожусь в функции 1.

«Генерация метаданных», если я в функции 2.

"Processing ..." если я в функции 3.

Функция 2 происходит только после того, как Успешное завершение 1.

Функция 3 происходит только после успешного завершения 2.

Я уже использую q.js обещает справиться с некоторыми частями, но код получил пугающе неаккуратно.

Я недавно столкнулся с Backbone, и он позволяет структурированные способы обработки поведения приложения с одной страницей, чего я хотел.

У меня нет проблем с серверной стороной, возвращающей ответы json для успеха или отказа конечных точек.

мне было интересно, что было бы хорошим способом реализовать эту функцию с помощью Backbone.js

ответ

2

Вы можете использовать файл «Прогресс» или запись БД, которая хранит состояние процесса бэкэнда. Периодически обновляйте этот файл.Например, записать это в файл:

{"status": "Generating metadata", "time": "3 mins left"} 

После того, как пользователь отправляет файлы имеют начало во внешнем интерфейсе Pinging функцию бэкенд progress с помощью простого AJAX вызова и setTimeout. функция progress просто откроет этот файл, захватит информацию о состоянии в формате JSON и обновит индикатор выполнения интерфейса.

Возможно, вам понадобится присоединение ajax к вашей модели. Попросите внешний вид вашего просмотра посмотреть изменения в status и соответственно обновить (например, индикатор выполнения).

+0

спасибо. Вы использовали что-то вроде этого, прежде чем использовать магистраль? –

+1

@kimsia У меня есть приложение в производстве, которое следует этой точной парадигме. Запросы модели для обновлений статуса и обновления модальности (просмотра) соответственно обновляются. –

+0

Благодарим вас за ответ. Кстати, могу ли я спросить, используете ли вы какие-либо другие фреймворки js, кроме основной, чтобы реализовать это? Например, марионетка? –

0

Длинный запрос Опрос: Polling request for updating Backbone Models/Views

В основном при загрузке файла вы будете присваивать «FileModel» для каждого заданного файла. FileModel начнет длительный запрос опроса каждые N секунд, пока не получит статус «завершен».

Смежные вопросы