Я пытаюсь создать приложение для отображения вопросника, но всякий раз, когда я нажимаю переключатель, ответ задерживается как минимум на несколько секунд.Эта проблема, однако, появляется только тогда, когда я тестирую приложение на iPad Air или когда я устанавливаю дросселирование процессора на 6-кратном замедлении в Google Dev Tools.Компьютер, на котором я работаю, имеет Intel i5-760 с частотой 2,8 ГГц.Я также обнаружил, что уменьшение количества переключателей также увеличивает производительность.На данный момент у меня есть 30-50 вопросов с 3 переключателями на каждой странице, так что около 90-150 переключателей, так что это может быть из-за огромного количества кнопок, которые у меня есть на странице.Хотя я не уверен в этом.
В приведенном ниже коде показан HTML-код, который я использую для отображения ответов:
<div *ngFor="let question of Questions" radio-group formControlName="{{'question' + question.Id}}" class="question-container" [ngClass]="{'custom-highlight': question.Highlight}">
<div text-left class="question">
<h3>{{question.QuestionText}}</h3>
</div>
<div text-wrap class="answer-container">
<ion-list mode="md" no-lines>
<ng-container *ngFor="let answer of question.Answers">
<div class="answer">
<ion-item no-padding mode="md" class="no-background">
<ion-label mode="md" [innerHTML]="answer.Label | translate"></ion-label>
<ion-radio mode="md" id="answer{{answer.Id}}" item-start value="{{answer.Label}}" checked="{{questionnaireForm.get('answer' + answer.Id).value ? questionnaireForm.get('answer' + answer.Id).value : false}}" (click)="clicked(answer)"></ion-radio>
</ion-item>
<div *ngIf="questionnaireForm.get('answer' + answer.Id).errors" class="text-danger">
<small text-left>{{getErrorMessageForAnswer(questionnaireForm.get('answer' + answer.Id).errors)}}</small>
</div>
<small text-left *ngIf="answer.Hint" class="form-text text-muted" [innerHTML]="answer.Hint"></small>
</div>
</ng-container>
</ion-list>
</div>
Я попытался определить время ответов, зарегистрировав Date.now ()в начале метода и в конце метода.Поскольку этот метод рекурсивный, я поставил console.log(Date.now())
в конце рекурсивного метода.Этот метод всегда заканчивался в ~ 100 мс-150 мс.Я не уверен, что это правильное время для моего метода, поэтому я немного скептически отношусь, и мой код может быть фактически мусорным.
Я также проверил профилировщик Google Dev Tools, и он показалмне это Google Dev Tools Profiler .Я понятия не имею, что это означает или какие события вызываются, поскольку я пытался удалить событие click из переключателя, и он по-прежнему вызывал те же события.
Пожалуйста, помогите, и если да, то спасибо.