Функции обратного вызова таймера запускаются после текущие инструкции в стеке вызовов завершены. Функции обратного вызова находятся в очереди событий и ждут, когда их вызовет среда выполнения JavaScript.
Вот пример. Обратите внимание, что «Задание завершено» будет напечатано на консоли раньше, чем поступит сообщение обратного вызова таймера. Обратный вызов будет выполняться ПОСЛЕ того, как основной поток простаивает.
console.log("About to set up the timer....");
setTimeout(function(){
console.log("Timer callback says 'Hello'");
}, 0);
console.log("Job Complete");
Если вы хотите, чтобы страница обновлялась в конце функции таймера, поместите этот код в конец функции обратного вызова таймера, а не после функция таймера.
console.log("About to set up the timer....");
setTimeout(function(){
console.log("Timer callback says 'Hello'");
console.log("Job Complete"); // <-- Now, this will run at the end
}, 0);
И, более конкретно, если вы хотите подождать, пока изображение загрузится, чтобы что-то сделать, просто установите обработчик события load
для изображения.