Чтобы не проверять свойство, можно удалять обработчик события после первого срабатывания
element.addEventListener("transitionend", function callback() {
element.removeEventListener("transitionend", callback);
…
});
Интереснее ситуация, когда время анимации разное, как определить тогда, что все анимации закончились?