2

Webアプリケーションでサードパーティのフラッシュコンポーネント(Javascriptでラップ)を使用しており、そこからコンマ区切りの値とbase64データを取得します。

配列関数としてcsv文字列を取得します。

// Get the csv as array function
var buff = $wnd.MyFlashComp.getData();
var strBuff = buff.toString();
var arr = strBuff.split(',');

base64データ関数を取得します。

// Get the data as base64 function
var buff64 = $wnd.MyFlashComp.getData64();

buff64を使用してそれをbase64srcデータとしてHTMLタグにプラグインすると、データはブラウザーで適切にレンダリングされます。つまり、ページはまだスナップされています。また、ページのパフォーマンスに問題はありません。

ただし、配列としてcsvを取得する関数は非常に遅く、遅れない場合はページがハングします。フラッシュから取得するデータのサイズは500KBから1MB(最大)です。

このコードのパフォーマンスを改善する方法はありますか?

4

1 に答える 1

3

split主な問題が1MBのデータを分割しているためであり、base64のためにHTML5準拠(または最新)のブラウザーを使用していると仮定して、 Webワーカーで分割を試してみませんか。


または、HTML5ブラウザーを使用していない場合は、手動の非同期ループ(setTimeout1msの遅延を伴うループ)と文字列操作を実行します。これを行うには、反復ごとに文字列のコンマ区切り部分を切り取り、残りがなくなるまで続けます。

setTimeout非ブロッキング操作に役立つはずですが、この方法で1MB全体を切り落とすのにどれくらいの時間がかかるかわかりません。そして、これは実際には「非同期」ではありません。操作がUIをブロックしないように、タイムアウトごとにタスクをスケジュールするだけです。さらに、反復ごとに、進行状況バーの「進行状況レポート」を実行できますが、残りの1MBの量を確認します。

于 2012-10-27T01:50:40.400 に答える