Дмитрий
просто да я могу сделать костылей кучу - у меня у самого код хитрый до жути... но лично мне было бы лаконичнее использовать на мой взгляд - именно асинхронные классы с асинхронным конуструктором по аналогии с функциями
Дмитрий
так то и сейчас можно сделать через промисы асинхронные классы: class Example { constructor() { return new Promise}} но такой подход просто выглядит криво и менее удобен в использовании
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
но так и будет в некоторых случаях )
Дима
Я хз, я не вижу больше смысла объяснять, ты либо соглашаешься либо нет, дело твоё, я не могу вынуть из головы собственный опыт и показать тебе что с тобой обязательно случится в дальнейшем и возможно даже неоднократно
Дмитрий
а потом будет export default async abstract class NameClass extends Class implements Int1, Int2, ..... wtf ?
а сейчас еще хуже если что - использовать костыли типа: class Example { constructor() { return new Promise}} явно не лучше
Дима
Да, тот же самый щит
Дима
Дейли ремайндер
Дима
Конструкторы в классах — это не место для ваших фетчей
Дима
А, я кстати понял в чем дело
Дмитрий
аргумент потому что - это не аргумент) я свои доводы привел - так удобнее работать с объектами) file = await new File('troll.jpg'); иначе зачем в конструкторе тогда вообще свойства - я так и не услышал
Дима
Ты пытаешься иммитировать замыкания с помощью классов, как это принято в других языках
Дима
В жс, имеющим нативные замыкания в нормальной форме это выглядит инвалидно
Дима
Какое такое?
Дима
Если ему нужен класс который выкидывается сразу после завершения реквеста, то это значит что у него просто нет места куда писать контекст
Дима
Дима
Джава, до диез, лол
Дмитрий
в целом конечно у меня код и так крайне странный... да и как обычно я видно тороплюсь с новыми фишками... тут народ еще к await то не все привыкли, а я уже хочу async class😅 await хотя бы классовые переменные, декораторы и приватность) да и то похоже долго ждать⏳
Дмитрий
async_class await super() ? Боже, какая прелесть! Откуда такая замечательная конструкция? =)
выше писал, но конечно телега не особо удобная штука в плане тем, как я понимаю... в целом это мое предложение по языку и да лично мне оно удобно - раз уж есть async func почему бы и нет🤔
Anonymous
Как ты себе это представляешь?
Sergey
Sergey
Как ты себе это представляешь?
только хотел написать)
Anonymous
Да блин. Ну сделай себе асинхронную фабрику, если очень надо.
Anonymous
Профит.
Sergey
+
Anonymous
Работать будет точно так же, как и асинхронный конструктор.
Anonymous
Вообще у нас нет классов. Так что забей.
A
ну работает типа такого
То есть твоя логика такая: мы создаём объект, который в конструкторе выполняет блокирующую операцию. И для того чтобы выполнить эту операцию асинхронно, то мы делаем класс объекта асинхронным и ожидаем ответа метода конструктора. Так получается?
Дмитрий
ну вроде так - да по сути асинхронный класс - это асинхронный конструктор я уже выше писал - это можно сравнить с тем, что вы делаете заказ и в одном случае он готов мгновенно, а в другом случае нужно подождать просто для меня async class столь же логичен, как и async func - да можно и сейчас все сделать разными методами/костылями мое предложение лишь сахар для работы с асинхронными свойствами/объектами через классы
Дмитрий
вопрос в сложности примера в твоем случае ты получаешь не тоже самое, что в моем примере ты получаешь сами файлы, а в моем примере ты получал именно объекты, где одним из свойств был 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; }}
Дмитрий
ну это уже вопрос иной: все или не все взять ту же машину - ты можешь ее купить, а потом улучшить, если вдруг захотелось все полагаю зависит от разных ситуаций, но async class - по сути тот же класс, но с большим простором для работы собственно с асинхронностью
Дмитрий
вообщем вопрос переменных я бы ставил такой же как если бы асинхронности не было вообще
A
ну это уже вопрос иной: все или не все взять ту же машину - ты можешь ее купить, а потом улучшить, если вдруг захотелось все полагаю зависит от разных ситуаций, но async class - по сути тот же класс, но с большим простором для работы собственно с асинхронностью
Но ведь при достижении в async функции ключевого слова await, JS вынимает эту функцию из цикла событий, который является однопоточным тредом и откладывает эту функцию в воркер до исполнения обещания. Так ведь работает механизм асинхронности? Как JS в твоей схеме будет вести себя с объектом с точки зрения асинхронности потоков?
Дмитрий
не совсем понимаю вопрос... изначально вся работа ведется в асинхронном режиме,если ты про это - я бы еще назвал его реальнм режимом) async function get_car(){ car = await new Car(green,red,blue); все здесь ждем нашу машинку или делаем еще что-то в зависимости от наших задач }
Дмитрий
ну вообще я просто видимо не особо знаком с Вами, поэтому мне тяжело отвечать порой... но вообще для паралелльной работы в js есть web workers
Дмитрий
и да как бы async func - это уже стандарт
Дмитрий
я лишь говорю о его применение еще и на классы
Дмитрий
это удобнее - лично для меня да) значит имеет смысл,но что это сахар - я не отрицаю
Дмитрий
куда больше простор?
я выше приводил пример с машиной