Как сказал Евгений, это потому, что setTimeouts происходят все сразу. Поскольку вы используете jQuery, вы можете использовать jQuery Deferred объекты для выполнения всех вызовов в последовательности:
$(function() {
// dfd is our "master" deferred, which we will use to pipe the requests, one at a time
var dfd = $.Deferred();
// set the deferred to resolve in 2 seconds, which will start the pipeline
window.setTimeout(dfd.resolve, 2000);
$('a[href]').each(function() {
var linkk = $(this);
var href = linkk.attr('href');
var req = conectar(...)
// replace the master deferred object with one that pipes into the next request
dfd = dfd.pipe(req);
});
dfd.done(function() { alert("All requests completed!") });
});
Конечно, если все, что вам нужно о том, что они начинают выполнение X секунд друг за другом, тогда другие ответы будут работать нормально. Этот метод позволит вам эффективно «цепочки» каждого из них, чтобы следующий был запущен, как только будет выполнен предыдущий, а также позволит вам сигнализировать, когда все они выполнены (с помощью dfd.done
).