2007年 12月 06日

jQuery Deferred

名前がやっぱよくないよなぁ。General Deferred とかにすればいいのかなぁ (jQuery 部分は分離して Rakefile で一括生成)。

  • JSDeferred
  • General Deferred
  • jKuery Deferred
  • JSContinuation (Deferred って名前がウケ悪い説 でもおかしいからだめだな)

JSDeferred にしよう。作業かいし

http://svn.coderepos.org/share/lang/javascript/jsdeferred/trunk/

mini (簡易圧縮バージョン) と nodoc (コメント全削除) もコミットするようにした。rake すれば生成される。mini と nodoc は見た目の差の割にサイズがそんなに変わらない (タブインデントだし) ので nodoc だけでもいい気もする。

Rhino memo

なんか、Rhino 上で setTimeout エミュレートしてテストしようとおもったら、そもそも言語的な部分の非互換を踏んでだめすぎる……

$ rhino
js> a = undefined || 1
true <= expect 1
js> a
true
js> a = undefined || 0
js> uneval(a) // (undefined は表示されないっぽいので uneval)
undefined <= expect 0
js> undefined instanceof Object
js: "<stdin>", line 1: The undefined value has no properties. <= expect false

あと Rhino のバージョンってどうやってみるんだろ。apt-cache show rhino すると

Version: 1.6.R1-0.0ubuntu3

だけど、これってめっちゃ古くて実は上の問題は新しいのだと解決していたりするのかな

setTimeout のエミュレートはよくわからんけど spawn と sync つかってかいた。けど、べつに使わなくていいよなと今読みなおしておもった……

http://coderepos.org/share/browser/lang/javascript/jsdeferred/trunk/test-rhino.js?rev=2673#L94

最新にしたらいけた……sudo apt-get remove rhino

$ wget ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_6R7.zip
$ unzip rhino1_6R7.zip
$ cp js.jar ~/bin
$ cd ~/bin
$ cat rhino
#!/bin/sh

if [ -z "$JAVA" ]; then
  if [ -n "$JAVA_HOME" ]; then
    JAVA="$JAVA_HOME/bin/java"
  else
    JAVA=/usr/bin/java
  fi
fi

"$JAVA" -jar ~/bin/js.jar "$@"