Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   VueJS: долгий VueX action; нужен ли Promise? (https://javascript.ru/forum/library-toolkit-framework/80039-vuejs-dolgijj-vuex-action%3B-nuzhen-li-promise.html)

shurikkan 20.04.2020 19:38

VueJS: долгий VueX action; нужен ли Promise?
 
Привет всем.

В приложении получаю довольно большие массивы данных.
Перед тем, как записать их в стейт, мне нужно распарсить их и сформировать из них объекты классов.

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

Как я понимаю, можно решить эту проблему поместив самые ресурсозатратные операции в promise? В целом, вся работа у меня идёт во VueX action. Всё остальное, по сути - контроллеры и шаблоны.

Сейчас схема работы такая:
  1. Получено сообщение по websocket
  2. Определяю какая команда пришла
  3. Запускаю vuex action для данной команды
  4. В экшене строка, полученная по websocket парсится, из каждого полученного элемента создаётся объект класса, объекты объединяются в массив и передаются в мутацию
  5. VueX mutation: массив полученный в п.4 помещается в state
  6. Получаю стейт через mapgetter и вывожу элементы массива в шаблон компонента через v-for

То есть, мне нужно обернуть всё, что делается в action в промис и запускать мутацию только после получения resolve? Правильно ли так делать или ошибка уже на стадии проектирования? Хз, может я не до конца понимаю реактивность и, возможно, можно завязываться на свойство/стейт с помощью watch, но пока не очень представляю дорожную карту всего этого =/

Раньше промисами не пользовался, так что прошу извинить мои, возможно, извращенские взгляды :help:

Nexus 21.04.2020 13:51

Цитата:

Сообщение от shurikkan
Как я понимаю, можно решить эту проблему поместив самые ресурсозатратные операции в promise? В целом, вся работа у меня идёт во VueX action. Всё остальное, по сути - контроллеры и шаблоны.

А есть ли в этом смысл?

Promise не выносит "операцию" в другой процесс/поток, так что подвисания не уйдут.
Другое дело Service Worker.


Часовой пояс GMT +3, время: 01:53.