Size: a a a

2020 March 28

l

lllla in ☄️ effector
а есть пример реализации?
источник

🦉⁣

🦉 ⁣ in ☄️ effector
lllla
а есть пример реализации?
class UnderLayerError extends Error {}
class NetworkError extends Error {
 constructor(type: "timeout" | "no_connection" | "broken", info) {
   super(this.makeMessage(type, info)
   this.type = type
   this.info = info
 }
}


а дальше обрабатываю в конкретную ошибку бизнес-правил или слоя выше

if (error instanceof NetworkError) {
 return {
   error: "network", recoverable: false, retry: true
 }
}
источник

s

stavanger in ☄️ effector
Всем привет. Не так давно открыл для себя effector.
Возник вопрос касательно клиентского api.
Есть n-ое кол-во сущностей. Каждая сущность имеет свой effect и store (createStoreObject): data, pending, fail (error).
По сути, сейчас получается так, что при создании сущности необходимо копировать эти две составляющие. Поэтому появилась потребность в динамическом создании на базе общего шаблона. Есть ли какие нибудь варианты это сделать, используя api effector-a? Или можно по классике обойтись фабричными функциями.
источник

🦉⁣

🦉 ⁣ in ☄️ effector
stavanger
Всем привет. Не так давно открыл для себя effector.
Возник вопрос касательно клиентского api.
Есть n-ое кол-во сущностей. Каждая сущность имеет свой effect и store (createStoreObject): data, pending, fail (error).
По сути, сейчас получается так, что при создании сущности необходимо копировать эти две составляющие. Поэтому появилась потребность в динамическом создании на базе общего шаблона. Есть ли какие нибудь варианты это сделать, используя api effector-a? Или можно по классике обойтись фабричными функциями.
лучше динамически не создавать ничего
источник

🦉⁣

🦉 ⁣ in ☄️ effector
а создать необходимое количество инстансов фабрикой
источник

VK

Valeriy Kobzar in ☄️ effector
🦉 ⁣
а создать необходимое количество инстансов фабрикой
это же не всегда возможно так
был же пример тут древовидной структуры, где создавались сторы для каждой ноды дерева и т.д.
а при удалении вычищались
источник

🦉⁣

🦉 ⁣ in ☄️ effector
Valeriy Kobzar
это же не всегда возможно так
был же пример тут древовидной структуры, где создавались сторы для каждой ноды дерева и т.д.
а при удалении вычищались
в большинстве случаев это возможно
источник

🦉⁣

🦉 ⁣ in ☄️ effector
и даже древовидную можно
источник

VI

Vadim Ivanov in ☄️ effector
🦉 ⁣
class UnderLayerError extends Error {}
class NetworkError extends Error {
 constructor(type: "timeout" | "no_connection" | "broken", info) {
   super(this.makeMessage(type, info)
   this.type = type
   this.info = info
 }
}


а дальше обрабатываю в конкретную ошибку бизнес-правил или слоя выше

if (error instanceof NetworkError) {
 return {
   error: "network", recoverable: false, retry: true
 }
}
Есть что про это почитать?
источник

FB

Furrya Black in ☄️ effector
🦉 ⁣
class UnderLayerError extends Error {}
class NetworkError extends Error {
 constructor(type: "timeout" | "no_connection" | "broken", info) {
   super(this.makeMessage(type, info)
   this.type = type
   this.info = info
 }
}


а дальше обрабатываю в конкретную ошибку бизнес-правил или слоя выше

if (error instanceof NetworkError) {
 return {
   error: "network", recoverable: false, retry: true
 }
}
Можешь рассказать про recoverable? Какую логику имплементит этот параметр?
В каком кейсе (эксепшоне) recoverable true?
источник

AO

Aleksandr Osipov in ☄️ effector
Могу предположить что, что-то вроде 429 ошибки HTTP
источник

AO

Aleksandr Osipov in ☄️ effector
К слову, вспомнил про ретраи тред тут, и предлагалось при получении 500ки так же делать ретрай, так вот вставал на такие грабли с нашим беком, ошибка выдавалась при валидация ответа, но после коммита в базу, так что запрос неидемпотентный получался, у нас там успешно создавались объекты но возникала 500ка, а при ретрае уже было что-то вроде 422 - с сообщением что с таким id уже существует объект. Так что не стоит ретраи делать на 500ки.
источник

FB

Furrya Black in ☄️ effector
Aleksandr Osipov
Могу предположить что, что-то вроде 429 ошибки HTTP
Из примера кусочка кода он false уже только потому что есть network error, но там может быть и не 429)
Но может это просто максимально простой копипаст для примера (и recoverable конкретно ничего не значит тут), не подумал)).
источник

MK

Mihail Kuzmin in ☄️ effector
Aleksandr Osipov
К слову, вспомнил про ретраи тред тут, и предлагалось при получении 500ки так же делать ретрай, так вот вставал на такие грабли с нашим беком, ошибка выдавалась при валидация ответа, но после коммита в базу, так что запрос неидемпотентный получался, у нас там успешно создавались объекты но возникала 500ка, а при ретрае уже было что-то вроде 422 - с сообщением что с таким id уже существует объект. Так что не стоит ретраи делать на 500ки.
ещё один аргумент в пользу того, что не все так просто с ретраями
источник

d

ds in ☄️ effector
🦉 ⁣
class UnderLayerError extends Error {}
class NetworkError extends Error {
 constructor(type: "timeout" | "no_connection" | "broken", info) {
   super(this.makeMessage(type, info)
   this.type = type
   this.info = info
 }
}


а дальше обрабатываю в конкретную ошибку бизнес-правил или слоя выше

if (error instanceof NetworkError) {
 return {
   error: "network", recoverable: false, retry: true
 }
}
сорри за оффтоп, а вы используете у класса-родителя = Error.captureStackTrace(this, NetworkError)? в своё время выстрелило при потере стэкатрейса, не забываемо, но чаще вижу без, уже не актуально?)
источник

l

la gente está muy loca in ☄️ effector
ds
сорри за оффтоп, а вы используете у класса-родителя = Error.captureStackTrace(this, NetworkError)? в своё время выстрелило при потере стэкатрейса, не забываемо, но чаще вижу без, уже не актуально?)
так это всё равно не везде работает
источник

🦉⁣

🦉 ⁣ in ☄️ effector
Furrya Black
Можешь рассказать про recoverable? Какую логику имплементит этот параметр?
В каком кейсе (эксепшоне) recoverable true?
Предлагаю пользователю повторить действие
источник

🦉⁣

🦉 ⁣ in ☄️ effector
Например не удалось сохранить, потому что сеть отвалилась. Пишу ему «сети нет. Повторить?»
источник

🦉⁣

🦉 ⁣ in ☄️ effector
Aleksandr Osipov
К слову, вспомнил про ретраи тред тут, и предлагалось при получении 500ки так же делать ретрай, так вот вставал на такие грабли с нашим беком, ошибка выдавалась при валидация ответа, но после коммита в базу, так что запрос неидемпотентный получался, у нас там успешно создавались объекты но возникала 500ка, а при ретрае уже было что-то вроде 422 - с сообщением что с таким id уже существует объект. Так что не стоит ретраи делать на 500ки.
Вот это и писал я
источник

VK

Valeriy Kobzar in ☄️ effector
можно ту модель гравитационную в 3д зафигачить
источник