Я пытаюсь выполнить загрузку, прежде чем щелкнуть блок div. на самом деле код такой:
$("#bookmark").click(function() {
$("#page-loader").fadeIn("slow"); //should execute first
//my second code witch is hiding and showing some elements and takes about 5 sec to do
$(elements).hide() or show();
});
но когда пользователь нажимает, он сначала выполняет второй, а затем первый:/
я пробовал delay(), setTimeout... но ни один из них не работал :(
Редактировать: Сработало, ребята, спасибо всем. Вы знаете, я действительно новичок и не слишком много понимаю в этих документах :))



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Потому что fadeIn — это асинхронная операция. Выполните последующие операции в обратном вызове:
$("#page-loader").fadeIn("slow", function () {
$(elements).hide()// or show();
});
Из документации: http://api.jquery.com/fadein/
Второй параметр функции fadeIn — это обратный вызов .fadeIn( [duration ] [, complete ] ), куда вы можете поместить код, который хотите выполнить после анимации.
$("#page-loader").fadeIn("slow", function() {
$(elements).hide(); // or show();
});
Найдите http://api.jquery.com/fadein/
.fadeIn( [duration ] [, complete ] )
$("#bookmark").click(function() {
$("#page-loader").fadeIn("slow", function complete() {
$(elements).hide();
//$(elements).show();
});
});