У меня есть асинхронная функция, которая проверяет несколько вещей и запускает себя снова и снова, используя setTimeout и queue.pop ().После того, как некоторая логика верна, мне не нужно, чтобы функция продолжала работать и продолжала вызывать себя, даже если какой-то элемент остается в очереди.Итак, в какой-то момент у меня есть такое утверждение:
if (isWhatIneed(currentItem)) {
completed = true;
return;
}
Я получил то, что искал.Проблема в том, что с тех пор в очередь поступает больше элементов, и она продолжает выполняться асинхронно.Поэтому, чтобы исправить это, я добавил в самый верх этой функции:
if (completed) {
console.log("already completed");
return;
}
Это предотвращает дальнейшее выполнение каждого выполнения в стеке вызовов (особенно, чтобы не выталкивать больше элементов из очереди ипродолжайте работать).
Мой вопрос: я прочитал, используя несколько выражений возврата esp.на вершине функции плохая практика.Но в этом случае вы видите другой способ сделать это?Я мог бы обернуть все тело своей функции, если (! Завершено) {// ...}, но мне это кажется уродливым, потому что отступает все тело, а ранний возврат - нет.
Спасибо,