JSDeferred
JSDeferred –
CodeRepos::Share – Trac
は簡単に非同期処理ができるライブラリ。
JSDeferredを使うと、AutoPagerizeのアイコンをカーソル移動に少し遅れて移動するスクリプトは下のように書ける。
// ==UserScript== // @name moveAutoPagerizeIcon // @namespace http://d.hatena.ne.jp/javascripter/ // @include http* // @require http://svn.coderepos.org/share/lang/javascript/jsdeferred/trunk/jsdeferred.userscript.js // ==/UserScript== with (D()) { var icon = document.getElementById('autopagerize_icon'), last; if (icon == null) return; var s = icon.style; document.addEventListener('mousemove', function (e) { last = Date.now(); var d = last; wait(0.5). next(function () { if (last == d) { var _color = getComputedStyle(icon, null).backgroundColor; s.backgroundColor = 'red'; wait(0.5). next(function () { s.backgroundColor = _color; }); } else { s.top = e.clientY + 'px'; s.left = e.clientX + 'px'; } }); }, false); }
addEventListenerもラップしたいんだけど、どうしたらいいんだろう。Deferred.registerっていうメソッドがあるのでそれを使えばいいのかな?