
A
16.02.2018
21:36:31

Сергей
16.02.2018
21:36:49
car = await Car.create(green, red, blue)

Daniel
16.02.2018
21:36:50
И какое поведение, если я инстанциирую класс без await

Сергей
16.02.2018
21:36:50
всё

Google

Daniel
16.02.2018
21:37:06
Я получу промис, который вернёт объект

Сергей
16.02.2018
21:37:12

Daniel
16.02.2018
21:37:24
Это очень несладкий сахар
Больше проблем создаст

Сергей
16.02.2018
21:37:44
об этом уже много людей написали
класс сам по себе не может быть асинхронным
async class Foo {}
ну и что
ты пишешь, что станет только конструктор асинхронным
а гораздо логичнее, чтобы все методы

Дмитрий
16.02.2018
21:38:41
И какое поведение, если я инстанциирую класс без await
дык используется ключевое слово такое же как и в функциях
async class <--> async func
если ты создаешь обычный класс - там нет никаких промисов, а если ты работаешь с асинхронным классом
то все также как и с async func должен понимать с чем работаешь)

Сергей
16.02.2018
21:39:55
конкретно меняется не много

Google

Сергей
16.02.2018
21:40:29
но класс как идея не может быть асинхронным
у тебя по идее должен быть асинхронный конструктор
class Foo {
async constructor() {
}
}
а не класс

Daniel
16.02.2018
21:41:21
даже асинхронный конструктор такая себе идея

Сергей
16.02.2018
21:41:36
ну это уже логичнее, хоть немного
асинхронный класс это как асинхронная переменная
async let foo = ...

Daniel
16.02.2018
21:42:46
Вообще сама идея создаёт промежуточное состояние у объекта, что очень и очень странно
Заносишь асинхронщину внутрь, когда она должна быть снаружи
Объект либо есть, либо нет
Factory функцию сделай
И все

Дмитрий
16.02.2018
21:43:20
дык а машину пока на заводе собирают она есть или ее нет?

Сергей
16.02.2018
21:43:39

Daniel
16.02.2018
21:43:47
Идеально
Класс машины описывает готовую машину, если подумать

Дмитрий
16.02.2018
21:44:23
я говорю про саму концепцию
а это уже разные подходы
и спорить что лучше классы или фабрика - иная совсем тема

Сергей
16.02.2018
21:44:48
так именно
сама концепция

Google

Сергей
16.02.2018
21:45:01
класс это абстрактная фигня для описания сущности
как ты его конструируешь это другой вопрос

Дмитрий
16.02.2018
21:45:15
окей а что тогда по-втоему конструктор?

Daniel
16.02.2018
21:45:18
На этапе сборки машина ещё не машина

Дмитрий
16.02.2018
21:45:22
разве не фабрика?

Сергей
16.02.2018
21:45:22
создание сущности
любой
начальное состояние
init

Дмитрий
16.02.2018
21:46:11
те в конструкторе машина не конструируется - окей...

Сергей
16.02.2018
21:46:26
нет

Сергей
16.02.2018
21:46:39
ты задаешь начальные значения
а с наследованием как объяснишь?
class Truck extends Car {}
какое здесь может быть промежуточное состояние между super и возвратом?
что там?

A
16.02.2018
21:47:37
Мой вопрос по поводу того что JS будет вынимать из event loop в webapi при достижении await остаётся открытым =)

Сергей
16.02.2018
21:47:40
недогрузовик или недомашина

Daniel
16.02.2018
21:48:26

Google

Daniel
16.02.2018
21:48:36
Тут скорее если проводить аналогии
То наличие асинка это доставка материалов параллельная и с неизвестным сроком
А сборка это один тик
В конструкторе
На конвейере

Сергей
16.02.2018
21:49:32
хорошо описал, согласен

Daniel
16.02.2018
21:49:34
Такое объяснение логичнее
Регулировка поставки материалов по логике не должна лежать в месте, где управляется конвейер
Ты конвейеру кормишь готовые детали
Создавая объект

Admin
ERROR: S client not available

Daniel
16.02.2018
21:50:44
А сами детали фетчишь асинк функцией, но не в конструкторе

Дмитрий
16.02.2018
21:54:27
ну в целом да так сейчас и делаю
хотя это уже немного разные вещи и подходы к тому, что такое конструктор и зачем он нужен...
свое видение я уже изложил для меня все-таки конструктор - это полноценный создатель
а не я ему это создай, принеси
я лишь указываю параметры и дальше хочу, чтобы он сам по ним все сделал, а я пойду подожду и займусь другими делами
мне такой подход клиента ближе

Daniel
16.02.2018
21:56:22
Я считаю, что даже если и назвать это сахаром, то оно вредит пониманию происходящего, ты все в одно смешиваешь
Мне даже в голову не приходило, вот реально сколько сейчас пытаюсь вспомнить
Нерушимая истина, сначала все данные собрал, а потом конструктором инстагциировал объект

Сергей
16.02.2018
21:59:39
Конструктор это только создание объекта
Вот на уровне языка
Не больше

Google

Дмитрий
16.02.2018
22:00:43
просто например если я работаю с модулями
import Car()
и вот не хочу я лишних действий потом, а лишь хочу указать нужные мне параметры, а все логика, чтобы была в модули и класс
а я просто делаю new_car = await Car(red,model1);
ну вот я и хочу создать объект, но без лишних проблем
просто указать в конструкторе что я хочу и получить это

Сергей
16.02.2018
22:01:47
Идеология другая
Нужно разделять
Делаешь фабрику и получаешь код без запашка

Дмитрий
16.02.2018
22:03:35
почему? я привел пример как это сделать
окей пусть возможно async conctructor лучше (хотя это нужно еще думать)
я писал больше async class для понимания самой идеи и чтобы люди сразу понимали что работают с уже отличным от привычного класса - в этом была суть

Daniel
16.02.2018
22:04:22
Ну тут есть ещё такая штука
Что классы не нужны))

Сергей
16.02.2018
22:04:31

Дмитрий
16.02.2018
22:04:58
ну да я уже понял что тут классы не все любят

Сергей
16.02.2018
22:05:20
А другого способа создать обьект у тебя нет

Дмитрий
16.02.2018
22:06:19
поэтому я и говорю, что лучше использовать async в классе, чтобы не было путаницы, что создается именно асинхронный объект

Сергей
16.02.2018
22:06:51
Нет
Лучше не делать так совсем
Эта функциональность просто не нужна
А тебе надо лучше изучить паттерны

Дмитрий
16.02.2018
22:07:22
ага классы тоже не нужны я понял

Сергей
16.02.2018
22:07:37
Смени имя

Дмитрий
16.02.2018
22:09:20
ладно посмотрим) классы говорили тоже не нужны, но они есть) не нравятся/не нужны - не используйте)
хотя видно сторонников моей идеи тут нет?

Сергей
16.02.2018
22:09:49
И не будет