menu
書いてる野郎
orebike@gmail.com
JavaScript1.7 からの機能
簡単に言うとビデオの再生とポーズができるリモコン付き関数を作ることができるようになったと。
まずポーズする位置のマーカーを仕込んだ関数を作成する。つまりEclipseのデバッガーでのブレークポイントのようなやつだ。
function*
というちょっと普通の function と違うキーワードで宣言する。
function* hoge(){ console.log("1"); yield 2; console.log("3"); yield 4; console.log("5"); return 6; }
この途中に仕込まれたyield
キーワードの位置で関数を一時停止することができる。
凄いのはこの一時停止時点で戻り値が取れることと、停止状態なのに関数の内部状態は保持されていること。
それでは動かしてみる。まずリモコンを取得する
var a = hoge();
この a に入っているオブジェクトを通じて関数をリモコンする。
console.log(a.next()); //=> 1 2 console.log(a.next()); //=> 3 4 console.log(a.next()); //=> 5 6
となる。外側の実行とオブジェクトの実行が交互になっているのがわかる。 さらにその時点での引数も帰ってくる・・・
と、考えるならば・・・こいつを