Есть цикл, ниже цикла проверка переменной, а в течении цикла её инициализация. Но очередности в JS нет, и цикл выполнится после проверки. Как это поправить? Вариант с таймером самый крайний.
"Но очередности в JS нет" - что значит нет очередности?! Как такое может быть? Может в цикле, для инициализации переменной, вы выполняете асинхронные запросы? Тогда вам надо использовать колбек.
У вас явно нет понимания того, что вы делаете))