JavaScriptの非同期処理

2015年2月4日 - 未分類

Javascriptで重たい処理をさせると、マウスがグルグル回るアイコンになって、ブラウザが固まってしまいます。マウスのグルグルが止まるまで、何もできません。JavaScriptは、同期処理なので、重たい処理が終わるまで、なにもできなくなります。Webアプリでは、よく見る光景なのですが、何とかならないものかと試行錯誤しました。

結論から言いますと、Pot.js というライブラリーを使わせてもらって、改善できました。Deferred.forEach文を使います。

potliteライブラリーを読み込んでおきます。


<script src="http://api.polygonpla.net/js/pot/potlite/1.38/potlite.min.js"></script>

最初に、


Pot.globalize();

として初期化しておくだけです。

後は、重たい処理に、Deferred.forEachを使うだけです。

highChartGraphの場合、addPointが重たいので、ここだけは、Deferred.forEachを使います。


Deferred.forEach(ary, function(value, key) {
point.addPoint(parseFloat(ary[i]));
if((i
prog.value= parseInt(i/m*100);
prgVal.innerHTML= parseInt(i/m*100)+'';
console.log('prog '+(i
}
i++;
});

ついでに、プログレスバーも付けておきました。これが伸びているのを見ていれば、気も紛れます。結果的に、気持ちいいくらいに、スムーズにグラフが伸びていきました。

注意) SafariやOperaでは動作しました。 iPhoneでは表示されました。Android端末では未テストです。 kindle Fireで動作確認できました。Android系でも動作するようです。

Translate »