私のWebアプリケーションでは、時にはかなり大きな10+ MBを得ることができるCVSファイルを生成することができます。このレポートには明らかに生成に時間がかかることがあります。レポートが生成されている間にユーザーのためにスロバを表示したいときは、スロボを非表示にしたいときに保存/実行するように求められます。これは可能ですか?大きなファイルを処理しているときにjQueryのスロバキア
答えて
いいえ、それはファイルが到着すると、ユーザーがそれを保存するときに検出する本当にことはできません。あなたはあまりにも多くのあなたのthrobberを更新し、彼らが続行する準備ができているときに継続的なリンクを提供しています。
これが可能であれば、ダウンロードサイトはファイルのリンク先ページを終了したらダウンロードリストに自動的に転送します。
はい、通常、JavaScriptで大量の操作がチャンクに分割され、setIntervalから呼び出されます。タイムアウトは、ページがフリーズするのを防ぎます。
var csvTxt = "";
var isDone = false;
addPart = function(){
csvTxt += addTextFromLongCalculation();
if(csvTxt > 10000000) isDone = true; // this is an arbitrary example
}
var handle = setInterval(function(){
addPart();
if(isDone){
clearInterval(handle);
}
}, 20);
これは分割に適していますが、彼はあまりにもスロバを追加したいと思っています...あなたの分割に加えて、この質問に対する答え - http://stackoverflow.com/questions/357323/showing-a-throbber -during-html-page-load-and-rendering/417710#417710彼は彼がどこになりたいかを手伝うべきです。 –
私はあなたがコンテンツタイプを設定してのが表示されるダイアログを保存し、ブラウザを待って、サーバ上のCSVを生成し、いくつかのデータを掲載していることを推測しています。正しい?
その場合、私はあなたが失望すると思います。私はかなりの時間をこの厳しいシナリオで発生するイベントを見つけるために費やしています。私はそれを理解できませんでした。私は最終的に、ファイルの作成状況をポーリングするためにXHRを使用するような複雑な処理をしなければなりませんでした。私が欲しかったレスポンスを得た後、私はスローバを隠し、CSVを要求しました。
鮮明にするには、次の
- は、ファイル作成したらCSVの作成
- の状態をポーリングするCSV生成
- 使用XHRを開始するには、サーバーを伝えるためにスロバー
- 使用XHRを表示
- 新しく作成されたCSVを指す非表示のiframeをドキュメントに追加し、サーバーにコンテンツ処理ヘッダーを追加させます。
- 少し遅れてスロバを非表示にします(ファイル保存ウィンドウが表示された後にスロボが表示されるように時間を計ることができますが、ユーザーがウィンドウとやりとりしている間にスクロールします)。また、恐怖を隠すためにウインドウのぼかしイベントを検出することもできますが、それはあまり信頼性が高くないと確信しています。
それは正しいです。 –
これはコメントではなく、回答として所属しています。私は、あなたがまだ任意の質問にコメントするのに十分な担当者を持っていないことを認識しています。 –
そして私はできることをやりました。私はOPを助けることができると思ったが、もっと情報が必要だった。 – Hemlock
- 1. 大きなxmlファイルの処理
- 2. 大きなテキストファイルの処理
- 3. 非常に大きなcsvファイルをタイムアウトとメモリエラーなしで処理する
- 4. 大きなHTMLファイルの印刷と処理を自動化
- 5. 処理大きな文書
- 6. 大きなファイルを処理している間にwindowsサービス経由でffmpeg.exeを実行できない
- 7. 非常に大きなcsvファイルをレールでインポートして処理するには
- 8. python - 非常に大きなファイル(> 90GB)を処理する
- 9. 大きなファイルを処理するには
- 10. スパーク時に大きなファイルを処理する方法
- 11. ノードは大きなファイルを処理できません。
- 12. python - 大きなサイズのファイルを処理する際の問題
- 13. Rubyで大量のファイルを処理するときのスローダウン
- 14. Pythonで大きなファイルを処理する最速の方法
- 15. PHP - 大きなデータを処理する
- 16. 大きなzipファイルの圧縮処理後に7Zipが終了しない
- 17. 複数のスレッドを使用して大きなExcelファイルを処理する
- 18. 春のバッチを使用して大きなファイルを処理する
- 19. 大きな入力を処理するときのパフォーマンスが非常に遅い
- 20. Cで大きなテキストを処理しています
- 21. c#マルチスレッド処理100個のバッチファイルに大きなファイル行
- 22. Twisted/Python - 大きなファイルを行単位で処理する
- 23. NSDataで大きなファイルを処理する方法は?
- 24. 大きなMXMLファイルを処理する方法
- 25. CFPropertyListで大きな.plistファイルを処理する
- 26. Javaで大きなファイルを処理する
- 27. 大きなファイルを処理するJavaヒープメモリエラー
- 28. Pythonで大きなcsvファイルを処理する
- 29. 大きなXLSXファイルをPythonで処理する
- 30. gaeで大きなファイルを処理する方法
ええ、これはやっかいな気がしました。継続リンク/スロババーの他に重い処理がバックグラウンドで行われていることをユーザーに知らせる方法は本当にありますか? –
これは可能ですが、大変な作業です。ダウンロードを開始するためにCSVにリダイレクトし、空のプログレスバーを置いて、コールバックを設定するために 'setTimeout'と言うとしましょう。後で、XMLHttpRequestを使用して、そのセッションでのダウンロードの進行状況をサーバーに問い合わせます。それはあなたに、もう一度別の時間 'setTimeout'を伝えます。サーバー上で、セッション変数を設定してCSV作成の進行状況を追跡します。サーバーが完了したら、完了コードを入力します。サーバー上のWebSocketsとnode.jsを使うともっと複雑になるかもしれませんが、ここで狂ってはいけません。 –