Виснет, потому что предложенный вариант как раз и тормозит компиляцию, загружая браузер важным делом (выполнение void("")) на время, пока data не true. Чтобы было асинхронно, используйте AJAX (здесь я не смогу помочь, увы). Как вариант, чтобы не тормозило, можно попробовать так:
var html;
var wData=setTimeOut(INITDATA, 500, data);
function INITDATA(data) {
if (data.response) {
clearTimeout(wData);
myvar = 'CAT';
html += 'myvar';
}
}
Здесь проверка происходит не непрерывно, а раз в полсекунды.
Важно: переменная html должна быть глобальна.