Есть простенькая задача для lazy-загрузки медленных частей страницы.
Суть такая. Всякие тормозные счётчики и прочее ставим в виде комментариев и потом, после загрузки и показа всей страницы, «раскомментируем» их. Например:
<span class="bors_lazy_load"><!--<center><a href="http://s02.flagcounter.com/more/NNik"><img src="http://s02.flagcounter.com/count/NNik/bg=FFFFFF/txt=000000/border=CCCCCC/columns=2/maxflags=12/viewers=0/labels=0/" alt="free counters" /></a></center>--></span>
$(function(){
$('.bors_lazy_load').each(function(){
el = $(this)
html = ''+el.html()
if(g = html.match(/^<!--([^\0]+)-->$/m))
el.html(g[1])
})
})
И вот тут возникает неприятность. Активация кода идёт синхронная, пока один тормозной блок прочихается, другие, быстрые, могут без надобности ждать своей очереди.
Первая мысль — запустить размаскировку асинхронно. В цикле не производить замену html, а запустить отложенный процесс, который это сделает. Например, через windows.setTimeout() с малым временем задержки.
Но в setTimeout нельзя передать параметр вызываемой функции. А нам нужно в параллельной задаче знать, что конкретно менять.
Есть мысли, как с этим бороться?