Size: a a a

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

2021 April 16

R

Rafael in Angular - русскоговорящее сообщество
у меня есть массив, я хочу проделать некую работу с каждым из элементов
источник

R

Rafael in Angular - русскоговорящее сообщество
если одно условие - то вернуть воид, ианче - вызвать другую цепочку
источник

D

Dmitry in Angular - русскоговорящее сообщество
of([arr]).pipe(
tap(arr => arr.foreach(…))
)
источник

R

Rafael in Angular - русскоговорящее сообщество
switchMap((orders: IOrder[]) => {
                   //     TODO: check for stop loss
                   //     TODO: shouldnt be sold in the same frame as bought
                   if (orders.length === 0) {
                       return of(void 0);
                   }
                   return from(orders)
                       .pipe(
                           mergeMap((order) => {
                               // продаем если выставленная цена ниже или равна локальному хаю
                               const isSelling = order.initialPrice <= row.high;
                               const isSameFrame = order.createdDate === row.date;
                               console.log(row.date, 'same frame', order.createdDate === row.date);
                               if (isSelling && !isSameFrame) {
                                   return this.ordersStore.completeOrder(order.id, row.date, row.high);
                               }
                               return of(void 0);
                           }),
                           skip(orders.length - 1),
                       );
               }),
источник

R

Rafael in Angular - русскоговорящее сообщество
не совсем подходит под юзкейс
источник

M

Maksim in Angular - русскоговорящее сообщество
toArray вроде
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Так зачем вам скип?
источник

D

Dmitry in Angular - русскоговорящее сообщество
вместо from используй of
источник

R

Rafael in Angular - русскоговорящее сообщество
если skip убрать то дальше по цепочке будет столько эмитов сколько элементов в массиве
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Ну именно в этом и отличие of от from
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Вообще, по-хорошему код должен быть такой:
const filteredOrders = orders.filter(isSelling && !isSameFrame);
return this.service.completeOrders(filteredOrders, row.date, ...).pipe()
-- апи для массовых действий, принимающий массив

Или
const filteredOrders = orders.filter(isSelling && !isSameFrame);
return forkJoin(filteredOrders.map(order => this.service.completeOrder(order))).pipe()
-- это вариант для бедных
источник

R

Rafael in Angular - русскоговорящее сообщество
ага, интересно, спасибо
источник

AB

Az Booki in Angular - русскоговорящее сообщество
buffer
источник

R

Rafael in Angular - русскоговорящее сообщество
buffer(of(orders))?
источник

AB

Az Booki in Angular - русскоговорящее сообщество
bufferCount(orders.length)
источник

R

Rafael in Angular - русскоговорящее сообщество
спасибо
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
toArray есть :) Он сделает то же самое
источник

AB

Az Booki in Angular - русскоговорящее сообщество
ну добро) Я ваще такто ворвался в разбор, особо не вникая в суть вопроса, если честно) но вроде понял, что он хотел)
источник

OP

Oleg P in Angular - русскоговорящее сообщество
Ты когда основательно сядешь за обучение - у тебя вопросы  возникают из-за нехватки знаний. Уже полтора месяца.
В сети море курсов для новичков в Ангуляр. Все вопросы отпадут, сэкономишь свое и чужое время. Могу порекомендовать несколько. За часов 8-12 можно пройти полный курс
источник

AB

Az Booki in Angular - русскоговорящее сообщество
брось надежду всяк сюда входящий)
источник