dicem
@dicem

Почему setTimeout уходит в too much recursion?

Имеется следующий метод во Vue:
submitComment(event) {
            if (event) {
                event.preventDefault();
            }

            // Включаем прелоадер
            this.sendingComment = true;

            if (!this.stateForumCommentLoader) {
                // Данные на отправку
                const data = {
                    text: this.commentText,
                    parent_id: this.parentComment ? this.parentComment : null,
                    file_id: this.fileId,
                };

                axios.post(this.$store.getters.postTopicCommentAPI(this.forumId), data)
                    .then(res => {
                        const commentData = res.data.data;

                        // Добавляем набор реактивных данных для нового комментария
                        this.$set(commentData, 'showFeedback', false);
                        this.$set(commentData, 'isEdit', false);
                        this.$set(commentData, 'showText', true);
                        this.$emit('pushAnswer', commentData);
                        this.$emit('watch-all');

                        this.commentText = '';

                        setTimeout(() => {
                            $('html,body').animate({ scrollTop: $(`#comment-${commentData.id}`).offset().top }, 1000);
                            this.$emit('closeAnswerFeedback');
                        }, 500);
                    })
                    .finally(() => {
                        this.sendingComment = false;
                        localStorage.removeItem('notFinishedComment');
                    });
            } else {
                setTimeout( this.submitComment(), 1500);
            }
        },


В самом конце я явно указал, что ждать перед запуском 1500 мс, но в итоге это просто игнорируется и выполняется все моментально не дожидаясь пока эти самые секунды пройдут. Почему так происходит?
  • Вопрос задан
  • 104 просмотра
Решения вопроса 2
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
setTimeout( () => this.submitComment(), 1500);
Ответ написан
@Che603000
c 2011 javascript
...
} else {
   setTimeout( this.submitComment(), 1500);  //  !!! this.submitComment() - вызывается сразу
}
....

видимо надо
setTimeout( ()=>this.submitComment(), 1500); //
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы