0

JavaScriptを使用して複数のファイルをアップロードしています。

ファイルをアップロードしたら、いくつかの処理機能を実行する必要があります。

必要な処理時間のため、プロセス全体の推定残り時間をユーザーに伝える UI が前面に必要です。

基本的に私は3つの機能を持っています:

  1. /upload - これはファイルをアップロードするためのエンドポイントです
  2. /generate/metadata - これは /upload の後にトリガーされる次のエンドポイントです
  3. /process - これは最後のエンドポイントです。/generate/metadata の後にトリガーする必要があります

これは、基本的に画面がどのように見えるかを期待する方法です。

ここに画像の説明を入力

残りのパーセンテージや残り時間などの情報が表示されます。

ただし、サーバーが情報を提供できるようにするか、javascript のみを使用してハッキング見積もりを行うかはわかりません。

また、次のようなユーザーメッセージを伝えるように画面を更新する必要があります

「現在アップロード中」

私が機能1にいる場合。

機能 2 の場合は「メタデータの生成」。

機能 3 の場合は「処理中 ...」。

機能 2 は、1 が正常に完了した後にのみ発生します。

機能 3 は、2 が正常に完了した後にのみ発生します。

私はすでに q.js promise を使用してこの一部を処理していますが、コードは恐ろしく乱雑になっています。

私は最近 Backbone に出くわしました。これにより、私が望んでいた単一ページのアプリの動作を処理する構造化された方法が可能になります。

エンドポイントの成功または失敗に対してサーバー側が json 応答を返すことに問題はありません。

Backbone.js を使用してこの関数を実装するにはどうすればよいか考えていました。

4

2 に答える 2

2

バックエンド プロセスの状態を格納する「進行状況」ファイルまたは DB エントリを使用できます。バックエンド プロセスで定期的にこのファイルを更新します。たとえば、次のようにファイルに書き込みます。

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

progressユーザーがファイルを送信した後、単純な ajax 呼び出しとsetTimeoutを使用して、フロントエンドがバックエンド関数に ping を開始します。関数は単にこのファイルを開き、progressJSON 形式のステータス情報を取得して、フロントエンドの進行状況バーを更新します。

おそらく ajax 呼び出しをモデルにアタッチする必要があるでしょう。フロントエンド ビューで への変更を監視し、statusそれに応じて更新します (進行状況バーなど)。

于 2013-03-02T05:59:08.373 に答える
0

長いポーリング要求: バックボーンモデル/ビューを更新するためのポーリング要求

基本的に、ファイルをアップロードするときは、指定されたすべてのファイルに「FileModel」を割り当てます。FileModelは、ステータスが「complete」になるまで、N秒ごとに長いポーリング要求を開始します。

于 2013-03-04T19:53:50.037 に答える