Size: a a a

Angular - русскоговорящее сообщество

2020 February 25

L

Looch in Angular - русскоговорящее сообщество
коллеги есть такой вопрос по rxjs:
у меня есть массив айтемов который я сначала получаю по http а потом подписываюсь на обновления по сокетам и юзер еще отдельно может обновлять эти айтемы по http и его же обновления прийдут по сокетам, так вот вопрос адекватно ли сделать race между двумя источниками обновления и не нужно ли все таки использовать http а не то что пришло из сокетов ?

getAndSubscribeToAllItems(): Observable<Item[]> {
       return this.getAllItems().pipe(
           switchMap(items => {
               let changedItemList: item[] = [...items]

               return concat(of(changedItemList), race(this.itemAdded.pipe(map(item => {
                   changeditemList = [...changedItemList, item].filter((_, i) => i !== 0)
                   return changeditemList
               })), this.itemUpdated.pipe(map(item => {
                   changeditemList = changeditemList.map(t => t._id === item._id ? item : t)
                   return changeditemList
               }))))

           }))

   }
}
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Looch
коллеги есть такой вопрос по rxjs:
у меня есть массив айтемов который я сначала получаю по http а потом подписываюсь на обновления по сокетам и юзер еще отдельно может обновлять эти айтемы по http и его же обновления прийдут по сокетам, так вот вопрос адекватно ли сделать race между двумя источниками обновления и не нужно ли все таки использовать http а не то что пришло из сокетов ?

getAndSubscribeToAllItems(): Observable<Item[]> {
       return this.getAllItems().pipe(
           switchMap(items => {
               let changedItemList: item[] = [...items]

               return concat(of(changedItemList), race(this.itemAdded.pipe(map(item => {
                   changeditemList = [...changedItemList, item].filter((_, i) => i !== 0)
                   return changeditemList
               })), this.itemUpdated.pipe(map(item => {
                   changeditemList = changeditemList.map(t => t._id === item._id ? item : t)
                   return changeditemList
               }))))

           }))

   }
}
почему бы не сделать просто чтобы любые входящие затирали старые данные и не мудрить с race?
источник

L

Looch in Angular - русскоговорящее сообщество
Anton Shvets
почему бы не сделать просто чтобы любые входящие затирали старые данные и не мудрить с race?
потому что у меня два источника данных один это событие update а другое add
источник

L

Looch in Angular - русскоговорящее сообщество
как я буду понимать какое из них пришло и какой мне нужно применить map
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Looch
как я буду понимать какое из них пришло и какой мне нужно применить map
upsert же
и хттп я бы вообще убрал как лишнюю сущность
источник

L

Looch in Angular - русскоговорящее сообщество
короче пофиг на http, я тоже так понял что он лишний и нет смысла его слушать
источник

L

Looch in Angular - русскоговорящее сообщество
не совсем понял upsert это оператор ?
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Looch
короче пофиг на http, я тоже так понял что он лишний и нет смысла его слушать
и еще вместо массива можно использовать обьект. чтобы не искать
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Looch
не совсем понял upsert это оператор ?
у вас он будет самодельным
источник

L

Looch in Angular - русскоговорящее сообщество
Anton Shvets
и еще вместо массива можно использовать обьект. чтобы не искать
по сути у меня есть 2 истоточника данных которые должны модифицировать то что изначально пришло из get запроса
источник

nt

nur tlek in Angular - русскоговорящее сообщество
Можно ли в проекте сделать trackby required?
источник

nt

nur tlek in Angular - русскоговорящее сообщество
прям везде
источник

AS

Aleksandr Shatilov in Angular - русскоговорящее сообщество
почему при публикации пакетов в npm до сих пор нужно ставить {
 "extends": "./tsconfig.lib.json",
 "angularCompilerOptions": {
   "enableIvy": false
 }
}

иначе такая ошибка
ERROR: Trying to publish a package that has been compiled by Ivy. This is not allowed
источник
2020 February 26

E

Eugene in Angular - русскоговорящее сообщество
Aleksandr Shatilov
почему при публикации пакетов в npm до сих пор нужно ставить {
 "extends": "./tsconfig.lib.json",
 "angularCompilerOptions": {
   "enableIvy": false
 }
}

иначе такая ошибка
ERROR: Trying to publish a package that has been compiled by Ivy. This is not allowed
Потому что ivy не готова для использования в библиотеках. Ждите 11 версии фреймворка.
источник

YS

Yuri Stepanov in Angular - русскоговорящее сообщество
nur tlek
прям везде
Это не всегда нужно.
источник

VL

Vladimir Luvolunov in Angular - русскоговорящее сообщество
Привет, ребят. Есть такие чайлд роуты
источник

VL

Vladimir Luvolunov in Angular - русскоговорящее сообщество
Почему второй вариант работает?
источник

VL

Vladimir Luvolunov in Angular - русскоговорящее сообщество
источник

S

Sergii in Angular - русскоговорящее сообщество
Ihor
heroku
Не совсем понял, как это может решить мою проблему) Нужна альтернатива https://beeceptor.com/console/eventlocator только чтобы никто редактировать мои ендпоинты в апишке не мог.
источник

VL

Vladimir Luvolunov in Angular - русскоговорящее сообщество
Vladimir Luvolunov
Привет, ребят. Есть такие чайлд роуты
Всё перепробовал, чот ничего не работает
источник