2016-09-23 13 views
1

Meteorアプリで大きなcsvファイルを解析し、S​​emantic UI Progressコンポーネントで進捗状況を表示しようとしています。しかし、それは凍結し、最終結果のみを表示します。ブラウザでMeteor、Semantic UI大きなcsvファイル解析中の進捗状況

Template.ordersImport.events({ 
    'click button': function (e) { 
     e.preventDefault(); 
     Papa.parse($('#importedFile')[0].files[0], { 
      delimiter: ';', 
      newline: '\n', 
      header: true, 
      fastMode: true, 
      complete: function (result) { 
       $('form').hide(); 
       $('#progress').show(); 
       var totalSize = result.data.length; 
       _.each(result.data, function (item, index) { 
        var progress = (index + 1)/totalSize * 100; 
        $('#progress').progress({ 
         percent: progress 
        }); 
       }); 
      } 
     }); 
    } 
}); 
+0

を処理しておきたい場合は、この答えは、あまりにも役立つかもしれません。 – MasterAM

+0

Meteorでワーカースレッドが機能しません(harrison_papa-parse.js?hash = af12d7c ...&papaworker:14 Uncaught ReferenceError:パッケージが定義されていません) –

+0

正しいですか。作業者はMeteorパッケージでは1つのファイルにまとめられているので動作しませんが、ライブラリコードを変更してワーカー関数を(文字列として)インライン化し、 'public directory'またはWebWorkerビルドターゲットがMeteorでサポートされるのを待ちます(これは起こるかどうかは不明です)。ただし、 'step'関数を使用することはできます(ワーカーを使用しない場合でもブロックされます)。 – MasterAM

答えて

0

コードはシングルスレッドで実行されますので、あなたが進行変数を更新していても、それはファイルの終了の解析まで、UIにレンダリングされません。

UIで時間のかかる処理を行うことは賢明ではありません。応答がなくなり、ブラウザがクラッシュする可能性があります(特に大容量ファイルの場合)。

ファイルをサーバーに渡してそこで処理することをお勧めします。

https://forums.meteor.com/t/how-to-use-web-worker/17511

あなたはワーカースレッドを使用し、 `step`機能でUIを更新し、ブラウザで

How to run an unblocking background task in a Meteor/JavaScript client?

関連する問題