.hasClass() кроме булева значения ничего не возвращает и проверять возращенное как true/false да еще строгой проверкой, это лишнее, достаточно if (!$(".preloader").hasClass("in")) ....
Что касается как узнать когда, то
https://developer.mozilla.org/ru/doc...tationObserver, если только по иному это не решается.