多分次のようなものです:
function change(areDoneYet) {
var realFun = (function(doneYet) {
var chars = "|/-\\";
var el = $('#target'); // I think that's the JQuery way
var current = el.innerHTML;
var changeTo = "";
if (current == "") changeTo = chars.charAt(0);
else
changeTo = chars.charAt(chars.indexOf(current) % chars.length);
el.innerHTML = changeTo;
if (!areDoneYet())
setTimeout(realFun, 100, doneYet);
});
realFun(areDoneYet);
if (!areDoneYet())
setTimeout(realFun, 100, areDoneYet);
}
まあ。それは少しエレガントではありません。停止するかどうかを返すコールバックを受け取ります。