Хотелось бы, чтобы я мог вспомнить сайт, на котором я его вытащил, чтобы я мог полностью отдать должное автору, но то, что вы можете искать, это хорошее использование Deferreds в jQuery.
Вот функция, которая использует Deferreds, чтобы у вас был чистый, функциональный, вызывающий механизм, очень похожий на тот, который вы показали (за исключением того, что он не блокирует, как упоминал Энди Е.)
$.wait = function(time) {
return $.Deferred(function( dfd ) {
// resolve() calls all of the registered
// 'done' callbacks (registered using then())
setTimeout(dfd.resolve, time);
}).promise();
};
Теперь, благодаря Deferreds, вы можете записать тайм-ауты в своем приложении следующим образом:
$.wait(5000).then(function() {
alert("Hello from the future!");
});