Как уже упоминался комментатор, JavaScript является однопоточным, поэтому вы не можете получить условия гонки.
Однако вас может сбить с толку тот факт, что пользовательский интерфейс не будет обновлять себя на основе JavaScript, пока не завершится поток. Это означает, что весь метод должен завершиться, включая весь код после вызова html(...)
, прежде чем браузер отобразит содержимое.
Если ваш код после вызова html(...)
зависит от макета страницы, которая пересчитывается перед продолжением, вы можете сделать что-то вроде этого:
$("#divToChange").html(newHTML);
setTimeout(function() {
// Insert code to be executed AFTER
// the page renders the markup
// added using html(...) here
}, 1);
Использование setTimeout(...)
со временем 1
в JavaScript откладывает выполнение до тех пор, пока текущий код JavaScript в вызывающей функции не завершится и браузер не обновит пользовательский интерфейс. Это может решить вашу проблему, хотя трудно сказать, если вы не предоставите воспроизводимый пример ошибки, которую вы получаете.