This seems silly, but I can\'t find how to do an asynchronous function call with jQuery that doesn\'t involve some server-side request. I have a slow function that iterates
I was going to suggest looking at a timeout but alas. This post by John Resig (of jQuery) explains a bit about how JavaScript handles its single thread. http://ejohn.org/blog/how-javascript-timers-work/
This article also explains: "One thing to remember when executing functions asynchronously in JavaScript, is all other JavaScript execution in the page halts until a function call is completed. This is how all the current browsers execute JavaScript, and can cause real performance issues if you are trying to call too many things asynchronously at the same time. A long running function will actually "lock up" the browser for the user. The same is true for synchronous function calls too."
All that said, it's possible you could simulate an asynchronous function call yourself by breaking whatever loop you are doing into a smaller chunk and using setTimeout().
For instance this function:
// Sync
(function() {
for(var x = 0; x < 100000; ++x) {console.log(x)}
})()
// ASync
var x = 0;
setTimeout(function() {
console.log(x++);
if(x < 100000) setTimeout(arguments.callee, 1);
} ,1)