$. Delay используется для задержки анимации в очереди, а не для остановки выполнения.
Вместо использования цикла while вам необходимо рекурсивно вызывать метод, который выполняет проверку каждую секунду, используя setTimeout
:
var check = function(){
if(condition){
// run when condition is met
}
else {
setTimeout(check, 1000); // check again in a second
}
}
check();