Я могу рекомендовать Ninject. Это невероятно быстро и просто в использовании, но только если Вам не нужна конфигурация XML, еще необходимо использовать Виндзор.
Вы просматриваете элементы и добавляете таймер для каждого с той же конфигурацией. По сути, для каждого элемента мгновенно устанавливается новый таймер. При первом тике всех таймеров элементы обновляются. Интервал одинаков для каждого, поэтому кажется, что все они обновляются одновременно.
Ваша логика должна быть сосредоточена вокруг таймера. Каждый тик таймера должен обновлять следующий элемент в коллекции. Вам не нужен каждый цикл, используйте таймер в сочетании с инкрементным индексом в качестве механизма цикла, останавливая таймер после обновления последнего элемента.
var elements = $(this).find('article.loading');
var index = 0;
setTimeout(function () {
$(elements).get(index).replaceWith($('#dumpster article:first'));
index++;
}, speed);
Что-то вроде выше, но не забудьте также остановить таймер!
Именно так написал Энди МакКлаггэдж. Я думаю, что-то подобное могло бы вам помочь.
var speed = 1000;
// init timer and stores it's identifier so it can be unset later
var timer = setInterval(replaceArticle, speed);
var articles = $('article.loading');
var length = articles.length;
var index = 0;
function replaceArticle() {
articles.eq(index).replaceWith($('#dumpster article:first'));
index++;
// remove timer after interating through all articles
if (index >= length) {
clearInterval(timer);
}
}