IE6/Firefox3から使えるsetImmediate「setImmediate.js」
setImmediate.jsはIE10のsetImmediateをIE6レベルのWebブラウザにも対応させるライブラリです。
JavaScriptで処理時間の長いスクリプトを実行する場合、setTimeoutを使うと思います。IE10ではさらに電力消費量を抑えられるsetImmediateが用意されていますが、類似関数を他のWebブラウザでも実現するのがsetImmediate.jsです。
[](http://images.moongift.jp/2013/01/Screenshot 2013-01-08 9.51.23.1357648526.png)
デモです。様々な高さの棒が並んでいます。
[](http://images.moongift.jp/2013/01/Screenshot 2013-01-08 9.51.27.1357648530.png)
こちらはHTML4を使って並び替えを行っています。
[](http://images.moongift.jp/2013/01/Screenshot 2013-01-08 9.51.42.1357648534.png)
徐々に並んできました。
[](http://images.moongift.jp/2013/01/Screenshot 2013-01-08 9.52.26.1357648538.png)
HTML4の場合、CPU負荷は低いです。対してHTML5の場合は高くなっています(それだけ高速です)。
[](http://images.moongift.jp/2013/01/Screenshot 2013-01-08 9.52.32.1357648543.png)
setImmediate.jsを使った場合、CPU負荷は高いものの電力消費量は抑えられる仕組みです。
setImmediate.jsの対応ブラウザはIE6以上、Firefox3以上、WebKit、Opera 9.5以上、Node.jsとなっています。クライアントはもちろんサーバサイドでも使えるのが魅力になります。process.nextTickやpostMessageなどを使い分け、うまく処理を行ってくれます。
setImmediate.jsはJavaScript製、MIT Licenseのオープンソース・ソフトウェアです。
MOONGIFTはこう見る
setImmediateはIE10向けの機能になっています。幾らIEのシェアが高いといってもWindows8はまだまだ普及が進んでおらず、IE10もまたデファクトとは呼べない存在です。そのような中では最新の技術を使ってみようとは思えないでしょう。
そこで必要になるのが非対応のWebブラウザでも類似の技術を提供するライブラリです。インタフェースが共通であれば過去のWebブラウザでもそれなりの恩恵を受けられるようになります。こういった橋渡し的ライブラリは今後さらにニーズが出てくるでしょう。