Как будет правильнее цикл или вызов функции на саму себя?
Рекурсивная функция очень забивает стек, а циклы for очень оптимизированные по всех современных браузерах. Функция использовать нужно в том  случае если вам это удобно или просто для практики.
Если вызывать функцию из себя через setTimeout, то стек не забьется (setTimeout вызывает свой коллбек только когда стек пустой). Более того, это единственно разумный способ (ну еще можно setImmediate, но бывает нужна все-таки задержка), т.к. setInterval сдохнет при уходе вкладки в фон, а отправлять 300 запросов сразу -- сами видите, что получается.