Дмитрий
просто да я могу сделать костылей кучу - у меня у самого код хитрый до жути...
но лично мне было бы лаконичнее использовать на мой взгляд - именно асинхронные классы с асинхронным конуструктором по аналогии с функциями
Дмитрий
так то и сейчас можно сделать через промисы асинхронные классы:
class Example { constructor() { return new Promise}}
но такой подход просто выглядит криво и менее удобен в использовании
Konstantin
лучше расскажите как с утечками памяти боретесь
Konstantin
вот есть у меня большой скрипт, который отжирает память
Konstantin
в браузерной консоли особо не поймёшь где и что
Дмитрий
ну кхм архитектуру надо знать и понимать досконально куда и что уходит
Konstantin
ну я вижу что утечка определенно есть
Konstantin
а что и где - хз
Дмитрий
ну смотря насколько сложный код...
хотя сам пока не сталкивался...
а чужого кода много? просто в моем случае я бы больше смотрел точно в сторону сторонних библиотек😒
Konstantin
Дмитрий
ну если код весь твой - тогда все гораздо проще)
Дима
он функциональщик :)
Должно быть стыдно если т.н. "функциональщик" вынужден объяснять вам что такое классы и для чего в них конструкторы
Дима
Особенно вам понравится как вам придётся делать наследование, я вам гарантирую, это полный восторг
Дмитрий
ну я себя ни к каким категориям не причисляю)
я исхожу из своей логики так то)
я ее обозначил: переменные указываю в конструкторе для получения готового образца по заказу
и разница для меня лишь в асинхронном случае в том, что заказ нужно подождать - это мое мнение лично
Дима
await super
Дима
Супер, правда?
Дмитрий
и в чем проблема?
Дима
Если ты не видишь здесь проблемы то объяснять придётся гораздо больше чем я планировал
Дмитрий
добавить одно слово в extends? это так сложно считаешь?
Дима
А, то есть у нас теперь ещё и в extends await? Жесть)
Konstantin
наследование по прототипу :)
Дмитрий
ты видно не читал изначальную ссылку:
//AsyncClass
async_class AsyncClass { // keyword async_class(example)
constructor() {
await something(); // now constructor async too
}}
//AsyncObj in some async method
let NewAsyncObj = await AsyncClass(); // create async obj
//Extends
async_class ExtAsyncClass extends AsyncClass{
constructor() {
await super(); // now we can await super too
await something();
}}
Дмитрий
да я изначально про это все писал
Дима
Конструкторы в классах — это не место для ваших фетчей
Дмитрий
почему нет?
Дима
Потому что
pa[aad
а потом будет export default async abstract class NameClass extends Class implements Int1, Int2, .....
wtf ?
Дмитрий
не надо утрировать
pa[aad
но так и будет в некоторых случаях )
Дима
Я хз, я не вижу больше смысла объяснять, ты либо соглашаешься либо нет, дело твоё, я не могу вынуть из головы собственный опыт и показать тебе что с тобой обязательно случится в дальнейшем и возможно даже неоднократно
Дима
Да, тот же самый щит
Дима
Дейли ремайндер
Дима
Конструкторы в классах — это не место для ваших фетчей
Дима
А, я кстати понял в чем дело
Дмитрий
аргумент потому что - это не аргумент)
я свои доводы привел - так удобнее работать с объектами)
file = await new File('troll.jpg');
иначе зачем в конструкторе тогда вообще свойства - я так и не услышал
Дима
Ты пытаешься иммитировать замыкания с помощью классов, как это принято в других языках
Дима
В жс, имеющим нативные замыкания в нормальной форме это выглядит инвалидно
pa[aad
Дима
Какое такое?
Дима
Если ему нужен класс который выкидывается сразу после завершения реквеста, то это значит что у него просто нет места куда писать контекст
pa[aad
Дима
Дима
Джава, до диез, лол
Дмитрий
в целом конечно у меня код и так крайне странный...
да и как обычно я видно тороплюсь с новыми фишками...
тут народ еще к await то не все привыкли, а я уже хочу async class😅
await хотя бы классовые переменные, декораторы и приватность) да и то похоже долго ждать⏳
A
A
Дима
Anonymous
Anonymous
Как ты себе это представляешь?
Sergey
Sergey
Anonymous
Да блин. Ну сделай себе асинхронную фабрику, если очень надо.
Anonymous
Профит.
Sergey
+
Anonymous
Работать будет точно так же, как и асинхронный конструктор.
Anonymous
Вообще у нас нет классов. Так что забей.
Дмитрий
Дмитрий
A
ну работает типа такого
То есть твоя логика такая: мы создаём объект, который в конструкторе выполняет блокирующую операцию. И для того чтобы выполнить эту операцию асинхронно, то мы делаем класс объекта асинхронным и ожидаем ответа метода конструктора. Так получается?
Дмитрий
ну вроде так - да по сути асинхронный класс - это асинхронный конструктор
я уже выше писал - это можно сравнить с тем, что вы делаете заказ и в одном случае он готов мгновенно, а в другом случае нужно подождать
просто для меня async class столь же логичен, как и async func - да можно и сейчас все сделать разными методами/костылями
мое предложение лишь сахар для работы с асинхронными свойствами/объектами через классы
A
Дмитрий
вопрос в сложности примера
в твоем случае ты получаешь не тоже самое, что в моем примере
ты получаешь сами файлы, а в моем примере ты получал именно объекты, где одним из свойств был blob(сам файл)
просто я привел изначально пример чисто для показания самого принципа работы и сферы применения
а так конечно там в конструкторе может быть 10 свойств, которые могут быть параллельно выполняться и прочее-прочее
Дмитрий
конкретно я например в принципе работаю с разными элементами, которые динамически создаются и грузятся из модулей)
поэтому сложный элемент(объект) может состоять из многих мелких)
поэтому я уже выше писал если взять более сложный пример например создание машины
async class Car{
constructor(color...){
[this.part1, this.part2, this.part3] = await Promise.all([
get_path1(color1),
get_path2(color2),
get_path3(color3),
]);
}}
car = await new Car(green,red,blue);
Дмитрий
ну и например если нам нужно расширить класс то все тоже достаточно тривиально
async class SuperCar extends Car{
constructor(color...){
await super(color...);
this.super_car = true;
}}
A
Дмитрий
ну это уже вопрос иной: все или не все
взять ту же машину - ты можешь ее купить, а потом улучшить, если вдруг захотелось
все полагаю зависит от разных ситуаций, но async class - по сути тот же класс, но с большим простором для работы собственно с асинхронностью
Дмитрий
вообщем вопрос переменных я бы ставил такой же как если бы асинхронности не было вообще
Дмитрий
не совсем понимаю вопрос...
изначально вся работа ведется в асинхронном режиме,если ты про это - я бы еще назвал его реальнм режимом)
async function get_car(){
car = await new Car(green,red,blue);
все здесь ждем нашу машинку или делаем еще что-то
в зависимости от наших задач
}
A
Дмитрий
ну вообще я просто видимо не особо знаком с Вами, поэтому мне тяжело отвечать порой...
но вообще для паралелльной работы в js есть web workers
Дмитрий
и да как бы async func - это уже стандарт
Дмитрий
я лишь говорю о его применение еще и на классы
Sergey
Sergey
Дмитрий
это удобнее - лично для меня да) значит имеет смысл,но что это сахар - я не отрицаю
Sergey