JavascriptのFunctionオブジェクトのプロパティ
何に使うんだよ、って今まで思ってたけど、
http://blog.livedoor.jp/dankogai/archives/50714622.html
こんなことに使えるのね。
あと、コールバックのキャンセルとかには割と奇麗に使えることに気づいた。
function createCallback(f1, f2) {
var executed = false;
var callback = function() {
if (!executed) {
f1.apply(null, arguments);
}
executed = true;
}
callback.cancel = function() {
if (!executed) {
f2.apply(null, arguments);
}
executed = true;
}
}
こんな感じでファンクションジェネレータを作って、
var callback = createCallback(onAjaxStuffComplete, doSomeCancelWork);
doSomeAjaxStuff(callback);
setTimeout(function() {callback.cancel();},100);
これでdoSomeAjaxStuffが100msec以内に終わればonAjaxStuffCompleteが呼ばれて、終わらなかったらdoSomeCancelWorkが実行される。
なかなかいいかも。