Мгновенно повторно отрендерить представление в vue

У меня есть шахматная программа, которая ищет на разных глубинах, и я хочу обновлять вид между каждой глубиной поиска, например, после глубины 1, после глубины 2 и так далее. Поэтому я передаю функцию обратного вызова функции решения шахмат:

updateAiInfo: (depth) => {
  this.depth = depth;
  this.$forceUpdate();
  console.log('check');
}

Он вызывается между каждой глубиной поиска, он печатает проверку, и я знаю, что глубина свойства vue изменяется, я дважды проверял это, но vue не обновляется до тех пор, пока не завершится функция решения шахмат. Как я могу мгновенно обновить представление vue?

Изменить: поскольку это функция стрелки es6, this не изменится, он останется привязанным к экземпляру vue. Эта функция передается в функцию шахмат внутри mounted().

Я думаю, проблема в том, что моя шахматная функция имеет больший приоритет, чем визуализация.

Mattias 10.08.2018 15:35

Проблема заключается в синтаксисе функции стрелки.

Helping hand 10.08.2018 15:44

Я не получаю никаких сообщений об этом. $ ForceUpdate () не является функцией, и она должна работать таким образом, поэтому я действительно не думаю, что это проблема.

Mattias 10.08.2018 15:45
stackoverflow.com/questions/42971081/…
Helping hand 10.08.2018 15:49
stackoverflow.com/questions/42971081/… То же самое и для функций внутри метода
Helping hand 10.08.2018 15:51

Вам нужно больше знать о this, а также не голосовать против ускорения: p

Helping hand 10.08.2018 15:52

Я знаю, как это работает в стрелочных функциях, и я все равно пробовал без стрелочных функций, и это не сработало.

Mattias 10.08.2018 16:07

Хорошо, удаляю свой ответ, дайте мне знать, когда получите решение.

Helping hand 10.08.2018 16:13

Существуют микрозадачи, внутреннее устранение неполадок, а также планирование, поэтому forceUpdate не будет выполняться немедленно. Какая у вас задержка перед рендерингом вывода?

Steven Spungin 10.08.2018 16:30

Это не рендеринг, пока моя шахматная функция не будет полностью завершена, он блокирует рендеринг. Мое уродливое исправление заключается в том, что я возобновляю выполнение через 10 мс с помощью setTimeout (), но, очевидно, это не оптимально.

Mattias 10.08.2018 19:53

@Mattias Возможно, вам придется использовать веб-работник для запуска вашей шахматной функции, проверьте https://stackoverflow.com/a/19626821/5665870

Sphinx 11.08.2018 01:06
0
11
42
0

Другие вопросы по теме