Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 February 10

ВС

Владимир Свешников... in NodeUA - JavaScript and Node.js in Ukraine
Kirill Skomarovskiy
И как решить проблему, если пользователь хочет отменить?
Что именно хочет отменить пользователь ?
источник

KS

Kirill Skomarovskiy in NodeUA - JavaScript and Node.js in Ukraine
Пользователь отправил запрос с выборкой из базы и он долго выполняется. Пользователь хочет остановить запрос, результат уже не важен. Я хочу закончить данный запрос и выполнить другой.
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
VovaS
Как пример, идёт загрузка 10000 картинок через Promise.all процес который при хорошем интернете берёт 5 секунд, при плохом 15 секунд. Идёт загрузка и я вижу что загрузка неочень (3G) и я решаю прервать запрос вручную на 10000 и не дожидаясь окончания сделать новый только на 100.
А если очередью реализовать, скажем у вас есть список, и вы этот список асинхронно обрабатываете
[ ... ].shift(), а в случае отмены - просто отдаете что успели обработать?
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
VovaS
Как пример, идёт загрузка 10000 картинок через Promise.all процес который при хорошем интернете берёт 5 секунд, при плохом 15 секунд. Идёт загрузка и я вижу что загрузка неочень (3G) и я решаю прервать запрос вручную на 10000 и не дожидаясь окончания сделать новый только на 100.
Тут не промисы отменять нужно, а делать совершенно другую абстракцию асинхронности. Нужно делать очередь, вы же 10000 сразу не гетаете одной пачкой, можно выделить например 4 канала обслуживания загрузок, и очередь ожидания на вход. Как только один канал освободился, берем из очереди следующую. Тогда отменять вообще просто.
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
VovaS смотрите курс по асинхронному программированию https://habr.com/ru/post/452974/
источник

FS

Fedir Smilianets in NodeUA - JavaScript and Node.js in Ukraine
Такие штуки очень хорошо решаются через rxjs

Штука поначалу сложная, но нередко случаются ситуации когда громоздкий код на промисах ужимается в несколько строк rxjs
источник

D

David in NodeUA - JavaScript and Node.js in Ukraine
Fedir Smilianets
Такие штуки очень хорошо решаются через rxjs

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

FS

Fedir Smilianets in NodeUA - JavaScript and Node.js in Ukraine
David
И без тоже хорошо решаются без введения 100500 избыточных понятий
Вопрос скорее в том что чем писать велосипед в пару сотен строк не проще ли взять готовое практически решение?
источник

KS

Kirill Skomarovskiy in NodeUA - JavaScript and Node.js in Ukraine
David
И без тоже хорошо решаются без введения 100500 избыточных понятий
Да документация по rx это зло.
источник

D

David in NodeUA - JavaScript and Node.js in Ukraine
Fedir Smilianets
Вопрос скорее в том что чем писать велосипед в пару сотен строк не проще ли взять готовое практически решение?
В случае с rxjs не проще
источник

FS

Fedir Smilianets in NodeUA - JavaScript and Node.js in Ukraine
Я нечасто агитирую за добавление зависимостей, но сложные асинхронности это вязкая тема, которую морочно писать и трудно поддерживать

Лично мне rxjs это решает
источник

D

David in NodeUA - JavaScript and Node.js in Ukraine
Зайди хоть на сайт одного и другого проекта и почитай что это для начала
источник

G

GNU/Vsevolod in NodeUA - JavaScript and Node.js in Ukraine
Это разные инструменты. Но функционал вебпака отчасти покрывает собой галп.
источник

D

David in NodeUA - JavaScript and Node.js in Ukraine
Fedir Smilianets
Я нечасто агитирую за добавление зависимостей, но сложные асинхронности это вязкая тема, которую морочно писать и трудно поддерживать

Лично мне rxjs это решает
Какой тип проекта это использовал  активно если не секрет ?
источник

FS

Fedir Smilianets in NodeUA - JavaScript and Node.js in Ukraine
David
В случае с rxjs не проще
https://t.me/nodeua/15930

Альзо, rxjs позволяет несколько абстрагироваться от внутренней механики асинхронных процессов, чем облегчает чтение кода
источник

V

VovaS in NodeUA - JavaScript and Node.js in Ukraine
Спасибо 👍
источник

FS

Fedir Smilianets in NodeUA - JavaScript and Node.js in Ukraine
David
Какой тип проекта это использовал  активно если не секрет ?
В какой классификации?

Из действительно сложных -- обычно решаю им задачи асинхронной доставки, обработки и отрисовки разнородных данных в один результат

Ещё очень заходит с обработкой клиентских ивентов, тот же банальный debounce выручает регулярно
источник

D

David in NodeUA - JavaScript and Node.js in Ukraine
Fedir Smilianets
В какой классификации?

Из действительно сложных -- обычно решаю им задачи асинхронной доставки, обработки и отрисовки разнородных данных в один результат

Ещё очень заходит с обработкой клиентских ивентов, тот же банальный debounce выручает регулярно
Я с rxjs столкнулся на фронте и выпилил это вместе с ангуляром не осилив борьбу за приемлемый перформанс
источник

FS

Fedir Smilianets in NodeUA - JavaScript and Node.js in Ukraine
switchMap для сбора зависящих друг от друга данных с разных микросервисов
источник

FS

Fedir Smilianets in NodeUA - JavaScript and Node.js in Ukraine
David
Я с rxjs столкнулся на фронте и выпилил это вместе с ангуляром не осилив борьбу за приемлемый перформанс
Перформанс проблемы в ангуляре как правило связаны с change detection и слишком частым рендерингом, не знаю при чем тут rxjs
источник