
JavaScriptの非同期処理
2015年2月4日 - 未分類
Javascriptで重たい処理をさせると、マウスがグルグル回るアイコンになって、ブラウザが固まってしまいます。マウスのグルグルが止まるまで、何もできません。JavaScriptは、同期処理なので、重たい処理が終わるまで、なにもできなくなります。Webアプリでは、よく見る光景なのですが、何とかならないものかと試行錯誤しました。
結論から言いますと、Pot.js というライブラリーを使わせてもらって、改善できました。Deferred.forEach文を使います。
potliteライブラリーを読み込んでおきます。
1 |
最初に、
1 | Pot.globalize(); |
として初期化しておくだけです。
後は、重たい処理に、Deferred.forEachを使うだけです。
highChartGraphの場合、addPointが重たいので、ここだけは、Deferred.forEachを使います。
1 2 3 4 5 6 7 8 9 | 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系でも動作するようです。