Ваш пример с setTimeout будет выполнять функцию не сразу, а после того, как будет ожидать число миллисекунд, указанное в 'time'. Например, чтобы показать предупреждение за 3 секунды:
window.setTimeout ( function() { alert ('Test'); }, 3000);
Обратите внимание, что даже если вы используете 0 в качестве значения времени, выполнение функции все еще откладывается до тех пор, пока текущий стек выполнения Javascript не завершится , что полезно при определенных обстоятельствах, но не в вашем случае.
Как говорит santiagoIT, вы никогда не должны полагаться на такую стратегию для выполнения каких-либо действий, которые зависят от того, завершился ли конкретный вызов AJAX. Вместо этого вы должны использовать функции обратного вызова. Это связано с тем, что при использовании таймеров DOM может быть еще не готов во время выполнения вашей функции (например, если компьютер работает медленно), эта проблема с многопоточностью известна в Computer Science как «Состояние гонки».
Чтобы избежать условий гонки, используйте функции обратного вызова. Пример использования библиотеки jQuery будет выглядеть следующим образом:
$.get("/url/ajax/getSomething", parameterArray, callbackFunction);
function callbackFunction(data) {
alert ('Work with DOM here');
}