делать проверки в javascript на незавершенные запросы, это полнейший мутор(именно ради такой цели)
я бы не сказал. в простейшем случае - счетчик, начало запроса увеличивает счетчик, окончание (неважно, успешное или нет) - уменьшает. Соответственно,если счетчик не равен нулю - лоадер должен крутиться.
desiigner: Семантика не при чем. Если попробуете получить второй блок
document.getElementById('material-loader') - у вас ничего не выйдет. вы получите первый попавшийся.
С .querySelector() - то же самое.