Вопросы с тегами [observable]

1

голосов
2

ответ
81

Просмотры

Angular6: почему это не работает? {{сообщение $ | асинхронной}}

Может кто-нибудь помочь мне с этим вопросом. В элементе, я хочу, чтобы отобразить элемент, когда Наблюдаемые оценивается в наличии, а также отображать содержимое наблюдаемого значения. Пожалуйста, смотрите код ниже: HTML {{сообщение $ | асинхронной}} Кнопка TS сообщение $ = новый Subject (); ngOnInit () {$ this.message .next (нуль);} OnClick () {$ this.message .next ( "тест");} stackblitz пример, когда я нажимаю на кнопку, элемент отображается, так как * ngIf = «сообщение $ | асинхронные» оцениваются верно, в то время как значение шаблона интерполяции {{сообщение $ | асинхронным}} не имеет значения. Здесь я не понимаю. Кто-нибудь знает об этом, пожалуйста, помогите объяснить, спасибо. {{Сообщение $ | асинхронной}} dosen't работа PS Я попробовал два других способа, чтобы заставить его работать (но до сих пор не понимаю, выше указанной проблемы): 1: использовать как синтаксис: {{сбщ}}; 2: использовать BehaviorSubject: сообщение $ = новый BehaviorSubject (нуль); оно работает
lijiejacklee
1

голосов
0

ответ
39

Просмотры

Как отключить повторную отправку запроса после того, как он был отменен в Угловых 2

У меня есть запрос HTTP, как это. пусть запрос:. Наблюдаемое = this.http.post (someUrl, someData) Теперь я хочу отменить этот запрос после того, как я называю sending.When request.subscribe () отказаться от подписки () он отменяет запрос и повторно отправить его еще раз. Я хочу, чтобы предотвратить повторную отправку его после отмены.
AngularDev
1

голосов
0

ответ
220

Просмотры

Angular 2 call Observable on component Initialize

Я хочу, чтобы вызвать наблюдаемый на компонент нагрузки. В Ниже функции. У меня есть ежемесячно () в службе, в которой я посылаю данные, используя тему следующего (). Я хочу, чтобы отправить данные из компонента нагрузки, чтобы получить компонент. тока, когда я ударил выключенность кнопки с помощью (изменить) Данные события сено правильно получить функцию, но я хочу, чтобы отправить данные на компоненте нагрузки Initialize. Я попытался назвать функцию ngOnInit (), но он не работает для меня. Пожалуйста, помогите, как сделать я вызвать toggleFunc (), когда компонент идентификатор нагрузки инициализации, так что я получить правильные данные в this.service.monthData $ .subscribe в получить компонент. Я попытался ссылаюсь на подобные вопросы, но ничего не работает для меня. // компонент нагрузки ngOnInit () {если (год> 0) {this.monthData = ложь; } Еще {this.monthData = TRUE; } This.toggleFunc (this.monthData); } ToggleFunc (Val) {this.service.monthly (Val); } // Служба общественного monthData = новый предмет (); общественный monthData $ = this.monthData.asObservable (); ежемесячно (значение) {this.monthData.next (значение); } // получить компонент ngOnInit () {this.service.monthData $ .subscribe (Val => console.log (Val);); }
Jay
1

голосов
1

ответ
267

Просмотры

RxJs and redux-observable. Append value when ajax succeed or failed

У меня есть следующий эпический: экспорт сопзЬ changeTeamSubscriptionPlan = (braintreePlanId: строка) => ({типа: CHANGE_TEAM_SUBSCRIPTION_PLAN, braintreePlanId,}); экспорт Const changeTeamSubscriptionPlanEpic = (действие $: любое, магазин: магазин) => действие $ .ofType (CHANGE_TEAM_SUBSCRIPTION_PLAN) .mergeMap (({braintreePlanId}) => {сопз состояние = store.getState (); Const {subscription_id} = состояние. payment.subscription; пусть запрос; если (subscription_id) {запрос = Ajax (api.changeTeamSubscriptionPlan (subscription_id, braintreePlanId));} еще {Const [метод] = state.payment.paymentMethods; запрос = АЯКС (api.createSubscription (braintreePlanId, method.token));} // Я хотел бы, чтобы излучать другое значение ({типа: FETCH_TEAM}) независимо от того, что происходит, // (в основном я пытаюсь сделать недействительными данные команды, даже если запрос не) возвращает запрос .map (ответ => ({типа: CHANGE_TEAM_SUBSCRIPTION_PLAN + SUCCESS, полезная нагрузка: {данных: response.response, статус : response.status,},})) .catch (ошибка => Observable.of ({тип: CHANGE_TEAM_SUBSCRIPTION_PLAN + ОТКАЗ, ответ: {данные: error.xhr.response, статус: error.xhr.status,},}) ); }); То, что я хочу сделать, это не имеет значения, если Аякса вызов завершается с уловом или вызывает карту я хочу добавить еще одно значение. Я бегу из идей, поэтому я надеюсь на помощь. CHANGE_TEAM_SUBSCRIPTION_PLAN + УСПЕХ, полезная нагрузка: {данные: response.response, статус: response.status,},})) .catch (ошибка => Observable.of ({тип: CHANGE_TEAM_SUBSCRIPTION_PLAN + ОТКАЗ, ответ: {данные: error.xhr. ответа, статус: error.xhr.status,},})); }); То, что я хочу сделать, это не имеет значения, если Аякса вызов завершается с уловом или вызывает карту я хочу добавить еще одно значение. Я бегу из идей, поэтому я надеюсь на помощь. CHANGE_TEAM_SUBSCRIPTION_PLAN + УСПЕХ, полезная нагрузка: {данные: response.response, статус: response.status,},})) .catch (ошибка => Observable.of ({тип: CHANGE_TEAM_SUBSCRIPTION_PLAN + ОТКАЗ, ответ: {данные: error.xhr. ответа, статус: error.xhr.status,},})); }); То, что я хочу сделать, это не имеет значения, если Аякса вызов завершается с уловом или вызывает карту я хочу добавить еще одно значение. Я бегу из идей, поэтому я надеюсь на помощь. Статус: error.xhr.status,},})); }); То, что я хочу сделать, это не имеет значения, если Аякса вызов завершается с уловом или вызывает карту я хочу добавить еще одно значение. Я бегу из идей, поэтому я надеюсь на помощь. Статус: error.xhr.status,},})); }); То, что я хочу сделать, это не имеет значения, если Аякса вызов завершается с уловом или вызывает карту я хочу добавить еще одно значение. Я бегу из идей, поэтому я надеюсь на помощь.
Tomasz Mularczyk
1

голосов
0

ответ
238

Просмотры

How to test the output of an NgForm function in angular

Я хочу, чтобы проверить результат от представления моей формы в угловом, но я не уверен, что ожидать. Я создал свои ложные данные и создал шпион с жасмином, но я пишу ожидать. Я знаю, что это возвращает Observable, но как я могу проверить это? Мой шаблон Const testForm = {значение: {адрес: {billing_address: '10500 N De Anza Blvd', billing_city: 'Купертино', billing_state: 'CA', billing_zipcode: '95014'}, billing_email_address: '[email protected]' , billing_first_name: 'Тим', billing_last_name: 'Кук', billing_phone_number: 2044567894, given_to: 'NumbersUSA Action', gross_gift_amount: 1000, recurring_subscription ложь}}; Мой компонент save_donation (form_data: NgForm) {вернуться this.donationService.post_donation_form (form_data.value) .subscribe (данные => возвращаемые данные); } Это мой тест, но я не знаю, как написать ожидать, чтобы сравнить его с издеваться. она ( 'должны размещать значения формы на сервер', () => {Const шпионский = spyOn (обслуживание, 'post_donation_form') .and.returnValue (Observable.from ([testForm])); donation_service_component.save_donation (testForm) ; ожидать (donation_service_component.save_donation) .toContain (testForm);}); должны размещать значения формы на сервер», () => {Const шпионский = spyOn (услуга, 'post_donation_form') .and.returnValue (Observable.from ([testForm])); donation_service_component.save_donation (testForm); ожидать (donation_service_component.save_donation) .toContain (testForm); }); должны размещать значения формы на сервер», () => {Const шпионский = spyOn (услуга, 'post_donation_form') .and.returnValue (Observable.from ([testForm])); donation_service_component.save_donation (testForm); ожидать (donation_service_component.save_donation) .toContain (testForm); });
Arthur Decker
1

голосов
1

ответ
126

Просмотры

How do I update data from Observable without having to re-subscribe/add disposable where I can delay the rendering of layout.xml until data is loaded?

My ViewModel is returning nullfields for current User how to fix? Say I had the following Disposable. getUserProfile calls a Retrofit 2 API that returns Observable
bycfly
1

голосов
1

ответ
309

Просмотры

JavaFX ObservableList с событием обновления экстрактор не стрелять, когда он должен

Немного предыстории: Прежде чем у меня была проблема, где я имел ObservableList с экстрактором, но свойства, экстрактор слушающие были обновлены с NOT JavaFX потока. Решение, которое я придумал было создать «UI эквивалентные» классы, которые будут копировать значения исходного класса, просто обновить свои свойства на JavaFX потоке. Например, если у нас есть лицо: Person общественного класса {личная окончательное BooleanProperty взрослого; общественное лицо (булево взрослый) {this.adult = новый SimpleBooleanProperty (для взрослых); // Randomize "взрослый" значение каждые 5 секунд ListViewExtractorTest.scheduledExecutorService.scheduleAtFixedRate (() -> {this.adult.set (Math.random ()> 0,5); System.out.println ( "Обновление взрослых:" + это) ;}, 5, 5, TimeUnit.SECONDS); // Геттеры сеттеров} UI класс эквивалент будет: общественный класс PersonUI {частное лицо окончательное лицо; частный окончательный BooleanProperty взрослых; общественные PersonUI (Person человек) {this.person = человек; взрослый = новый SimpleBooleanProperty (person.isAdult ()); . Person.adultProperty () добавления слушателя ((observableValue, OldValue, новое_значение) -> {Platform.runLater (() -> this.adult.set (новое_значение));}); } // Геттеры и сеттера} Я сделал то же самое с ObservableList - создал метод, который бы добавить ListChangeListener в список источников и всякий раз, когда исходный список обновляется она будет обновлять список адресатов с UI эквивалентных классами на JavaFX нити: открытый статический ObservableList bindListContentPlatformRunLater (ObservableList srcList, функция функция, ObservableList dstList) {для (T пункта: srcList) {dstList.add (Function.apply (пункт)); } // Может быть, нужно обернуть весь в то время как цикл в Platform.runLater () // Меньше runnables, но большие изменения могут повесить UI. srcList.addListener ((ListChangeListener
ESipalis
1

голосов
0

ответ
109

Просмотры

Угловой фильтр наблюдаемый с критериями

в угловом 5 проекта, я хочу, чтобы отфильтровать наблюдаемые с критериями. Критерии должны сказать фильтр, в котором столбец он должен фильтровать. Данные пары содержит термин и критерий из поиска формуляра. Я не знаю, где, чтобы добавить критерии параметров. Мой реальный код: общественный поиск (данные: любой): любой {console.log (data.criteria); вернуть Observable.from (ELEMENT_DATA) .filter (элемент => element.name.toLocaleLowerCase (). включает в себя (data.searchTerm.toLocaleLowerCase ())) .map (элемент => element.name) .subscribe (элемент => консоли. войти (элемент), ERR => console.error (ERR), () => console.log ( 'потокового закончена')); } Спасибо за вашу помощь :-) С наилучшими пожеланиями
A. Mehlen
1

голосов
2

ответ
357

Просмотры

RxJava - Observable which emits items which are new or changed

Я новичок в реактивном мире и пытаюсь реализовать следующий сценарий с rxjava / rxandroid 2.x. У меня есть локальные данные, выбранные в качестве ArrayList mItems в классе Application. Тот же набор данных синхронизируются с сервером и обновляется каждый раз, когда пользователь открывает приложение. Однако, прежде чем сервер возвращает ответ, я хочу, чтобы отобразить локальный набор данных в RecycleView подкрепленную адаптера. Как только ответ возвращается, адаптер должен обновить список с дельтой и не нарушая порядок в пользовательском интерфейсе. До сих пор я попытался это: общественные Наблюдаемые getItemsObservable () {Наблюдаемого observeApi = itemServiceAPI.getItemsForUser (ACCOUNTID); если (! mItems = NULL) {вернуться Observable.just (mItems) .mergeWith (observeApi); } Еще {вернуть observeApi; }} Для обновления пользовательского интерфейса, описанный выше метод вызывается следующим образом: Наблюдаемое itemsObservable = appContext.getItemsObservable (); itemsObservable.subscribeOn (Schedulers.io ()) .observeOn (AndroidSchedulers.mainThread ()) .subscribe (новый DefaultObserver () {@Override общественный недействительный onNext (элементы списка) {// Код для обновления адаптера} @Override общественных недействительного OnError (Throwable, е) {} @Override общественный недействительный OnComplete () {}}); С этим я получаю onNext вызывается дважды для каждого локального набора данных и удаленного набора данных. Как достичь желаемой функциональности? Нужно ли использовать операторы фильтра, чтобы исключить элементы? Каков наилучший подход для достижения этой цели?
Pawan
1

голосов
2

ответ
99

Просмотры

Java наблюдатель / Наблюдаемые

Я должен создать код для наблюдаемого и наблюдателя. Каждый наблюдатель имеет свой собственный «обновить» метод, как вы уже знаете. В моем наблюдаемом коде, я использовал метод «notifyObservers». Ее параметром является строка, содержащая массив Infos о моих проектах (номер команды, имя гамбургер, имя напитка, и т.д ..). Я до сих пор есть ошибка в моем методе обновления в моем наблюдателя, и я не знаю, откуда приходит. Его два параметра является наблюдаемыми и строковым массивом, содержащим Infos я уже заданным. вот мое обновление кода общественного недействительными (Наблюдаемые arg0, arg1 Object) {если System.out.println ( "Objet émetteur белорыбицы \ п") ((arg0 InstanceOf BDCommande)!); если (арг1 InstanceOf String []) {String [] = этикетка новая строка [5]; метки = (String []) арг1; } Еще System.out. Println ( «Тип сообщения от белорыбицы»); INT Num = Integer.parseInt (метки [0]); } Ошибка обнаружена в последней строке методы, метко [0], кажется, не распознаются. Если кто-то может помочь мне здесь, это будет круто. Спасибо ! (И простите за мой бедный английский я французский)
MisterPur
1

голосов
0

ответ
378

Просмотры

ngrx получить значение функции

Я уверен, если это правильное мышление, но я только начал использовать ngrx для проекта и теперь все наблюдаемым. Он хорошо работает, когда я использую асинхронную трубу в виде компонентов, но я struggeling, когда мне нужно значение из магазина в коде. Мой текущий подход сделать свойство и подписаться на ngOnInit к селектору, так что я могу использовать текущее значение состояния в моих функциях. Например хранения опций configration (вебсервис адрес) и затем с помощью, что внутри службы. @Injectable () экспорт класса HTTPService {localOptions $ = this.store.pipe (выберите (fromOptions.selectLocalOptionsState)); Варианты: fromLocalOptions.State; конструктор (частный магазин: магазин,) {this.localOptions $ .subscribe (localOptions => this.options = localOptions); } getEntities (fParams): Наблюдаемое {console.log (this.options.webServiceUrl); }} Это чувствует себя странно, поэтому мой вопрос: Является ли это способ сделать это, или я что-то отсутствую, но везде, где я читал, что нет простого способа получить «текущее значение из наблюдаемых», который я думаю, что я уже понимаю, Зачем.
1

голосов
0

ответ
62

Просмотры

невозможно преобразовать тип наблюдаемого ввести

Я пытаюсь использовать угловой тип Subject, чтобы создать общую службу данных между различной компонентой. Я начал создавать свою Subject переменную частной returnedDataSubject = новый Subject (); затем установить подписаться на этот наблюдаемую returnedData = this.returnedDataSubject.asObservable (); GetList () {this.returnedDataSubject.next (this.httpClient.get (this.url)); } Я получаю сообщение об ошибке на VisualCode невыполним де convertir ля типа «Наблюдаемого» ан типа «FilmCard». невозможно преобразовать тип «Observable напечатать Я пытался следовать этому учебнику
infodev
1

голосов
2

ответ
2.8k

Просмотры

RxJs- Observable - Как получить данные из JSON объекта

У меня есть ответ JSON различимого below.I хотел бы получить данные из этого наблюдаемого в два отдельных массиве, такие как [ABC, XYZ] и [аа, бб]. Можно ли с помощью гх Наблюдаемые карту и switchmap, чтобы получить два массива в то же наблюдается. this.data $ = Observable.of ({ "данные": [{ "Имя": "ABC", "Lastname": "аа"}, { "Имя": "XYZ", "Lastname": "бб"} ]}) .map (Рез => res.data) .switchMap (DataArray => {вернуть Observable.from (DataArray);}) .map ((arrayResp: любой) => {возвращение (arrayResp.firstname);}) .toArray () Здесь IAM только возможность получить один массив. Можно ли получить два массива только в этом методе.
1

голосов
4

ответ
148

Просмотры

Rx.NET: зерноуборочный наблюдаемыми в порядке

У меня 2 IConnectableObservables, где один переигрывая старые исторические сообщения, а другой излучающие свежие текущие значения: HistoricObservable: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - ... CurrentObservable: - - - - - 5 - 6 - 7 - 8 - 9 - 10 - ... Как я могу объединить их в едином наблюдаемом таким образом, что я получаю полную (правильную) последовательность из двух наблюдаемых, но и отказаться от подписки и вызвать Dispose на HistoricObservable подписки раз Я начал испускать значения из CurrentObservable. MergedObservable: - 1 - 2 - 3 - 4 - 56 - 7 - 8 - 9 - 10 - ... Мои сообщения идентифицируются Guid, поэтому решение может только сравнить их с использованием равных и не может полагаться на заказ другие чем то, как он, излучаемого каждым из наблюдаемых. Короче говоря, я ищу, чтобы заполнить метод: общественности статической IObservable MergeObservables (IObservable historicObservable, IObservable currentObservable), где T: IEquatable {певд NotImplementedException (); } На MergedObservable должен иметь излучающие значения из HistoricObservable, не дожидаясь первым значение от CurrentObservable, и если первое значение из CurrentObservable уже излучаемые ранее, то MergedObservable должен пропускать любые значения в CurrentObservable уже испускаемые, распоряжаться подписка на HistoricObservable и начать принимать все новые значения CurrentObservable. Я также не хочу, чтобы сразу переключиться, когда первый объект излучается CurrentObservable, пока не дойдет до этого момента в HistoricObservable так что я с трудом пытается использовать TakeWhile / TakeUntil. Я' ве возникли некоторые незначительные успехи с CombineLatest, чтобы сохранить состояние, но я думаю, что, вероятно, лучший способ. Тесты для следующих тестовых случаев предположат, каждое сообщение представлено GUID следующим образом: А = E021ED8F-F0B7-44A1-B099-9878C6400F34 В = 1139570D-8465-4D7D-982F-E83A183619DE С = 0AA2422E-19D9-49A7-9E8C-C9333FC46C46 D = F77D0714-2A02-4154-A44C-E593FFC16E3F Е = 14570189-4AAD- 4D60-8780-BCDC1D23273D F = B42983F0-5161-4165-A2F7-074698ECCE77 G = D2506881-F8AB-447F-96FA-896AEAAD1D0A Н = 3063CB7F-CD25-4287-85C3-67C609FA5679 I = 91200C69-CC59-4488-9FBA-AD2D181FD276 J = 2BEA364E-BE86-48FF-941C-4894CEF7A257 К = 67375907-8587-4D77-9C58-3E3254666303 L = C37C2259-C81A-4BC6-BF02-C96A34011479 М = E6F709BE-8910-42AD-A100-2801697496B0 N = 8741D0BB-EDA9-4735 -BBAF-CE95629E880D 1) Если исторический наблюдаемым никогда не догоняет текущий наблюдаемый тогда объединенный наблюдаемого никогда ничего не должно испускать от текущего наблюдаемой Historic: - A - B - C - D - E - F - G - H | Ток: - - - - - - - - - - - - - - - I - J - K - L - M - N | Объединять: - A - B - C - D - E - F - G - H | 2) Как только исторические наблюдаемые достигает первое значение, излучаемое ток наблюдаемых, то объединенные наблюдаемым должен немедленно испускают все значения, ранее испускаемых тока наблюдаемых и отсоединить от исторического наблюдаемого. Исторические: - A - B - C - D - E - F - G - H - I - J | Ток: - - - - - - E - F - G - H - I - J | Merged: - A - B - C - D - EF-G-H - I - J | 3) Решение должно быть в состоянии обрабатывать значения, поступающие от текущего наблюдаемого до исторического наблюдаемого. Исторические: - - - - - A - B - C - D - E - F - G - H - I - J | Ток: - - C - D - E - F - G - H - I - J - K - L - М - Н | Merged: - - - - - A - B - CDEF-GH- I - J - K - L - М - Н | 4) Если значения из текущих наблюдаемых уже излучаемых того решение должно пропускать их, пока новое значение не излучаются. Исторические: - A - B - C - D - E - F - G - H - I - J | Ток: - - - - - - - - В - C - D - E - F - G - H - I - J | Merged: - A - B - C - D - - - - - - E - F - G - H - I - J | 5) Для моих случаев использования я гарантировано, что текущие наблюдаемое будет подмножеством исторического, но для полноты картины я предположил бы, что решение будет продолжать вытягивать от исторического наблюдаемого мышления, что будет происходить первый элемент на более позднем этапе исторического : - - - - - E - F - G - H - I - J - ... - Z - A | Ток: - - A - B - C - D - E - F - G - H - I - J | Объединять: - - - - - E - F - G - H - I - J - ... - Z - ABCDEFGHIJ | 6) Я также гарантирует, что исторический наблюдаемыми не будет отличаться от текущей наблюдаемой, как только они синхронизируются, но если по какой-то причине они делают объединенное наблюдаемым должны были уже отсоединен от него и выиграл» т подобрать любые различия Historic: - A - B - C - D - E - D - C - B - A | Ток: - - - - - - E - F - G - H - I - J | Merged: - A - B - C - D - EF-G-H - I - J | Помощь при создании рабочего раствора, вот некоторые входные данные: вар исторический = новый Subject (); вар ток = новая Тема (); // запрос и подписка идет здесь historic.OnNext (1); historic.OnNext (2); current.OnNext (5); historic.OnNext (3); current.OnNext (6); historic.OnNext (4); current.OnNext (7); historic.OnNext (5); current.OnNext (8); historic.OnNext (6); current.OnNext (9); historic.OnNext (7); current.OnNext (10); Правильное решение должно произвести число от 1 до 10. вот некоторые входные данные: вар исторический = новый Subject (); вар ток = новая Тема (); // запрос и подписка идет здесь historic.OnNext (1); historic.OnNext (2); current.OnNext (5); historic.OnNext (3); current.OnNext (6); historic.OnNext (4); current.OnNext (7); historic.OnNext (5); current.OnNext (8); historic.OnNext (6); current.OnNext (9); historic.OnNext (7); current.OnNext (10); Правильное решение должно произвести число от 1 до 10. вот некоторые входные данные: вар исторический = новый Subject (); вар ток = новая Тема (); // запрос и подписка идет здесь historic.OnNext (1); historic.OnNext (2); current.OnNext (5); historic.OnNext (3); current.OnNext (6); historic.OnNext (4); current.OnNext (7); historic.OnNext (5); current.OnNext (8); historic.OnNext (6); current.OnNext (9); historic.OnNext (7); current.OnNext (10); Правильное решение должно произвести число от 1 до 10.
Paul Milla
1

голосов
2

ответ
440

Просмотры

Why subscribe on BehaviourSubject asObservable never fires onComplete?

I'm using Angular. I have service which I use to store and get data from localstorage. I'm saving BehaviorSubject asObservable(). Code below: import { Injectable} from "@angular/core"; import { BehaviorSubject } from 'rxjs/BehaviorSubject'; @Injectable() export class NavigationStorageService { ModuleTitle = new BehaviorSubject(""); currentModuleTitle = this.ModuleTitle.asObservable(); constructor() {} setModuleId(ModuleId) { localStorage.setItem('subModuleId', ModuleId) this.ModuleTitle.next(ModuleId); } getModuleId() { this.ModuleTitle.next(localStorage.getItem('subModuleId')); return this.currentModuleTitle; } } Next I'm getting this data using code below: getModuleId() { this._navigationStorageService.getModuleId() .subscribe( subModuleId => { this.subModuleId = subModuleId }, error => { console.log(error) }, () => console.log("getModuleId")); } My problem is I want to execute other function when observable is completed but this observable is never completed so I can't do that. () => console.log("getModuleId") is not showing the message. How can I solve this? At the other part of my App I'm using Observable to get HttpClient request and it works fine. I mean onComplete fires as it should to. I have tried using .finally() getModuleId() { this._navigationStorageService.getModuleId() .finally(() => console.log("getModuleId")) .subscribe( subModuleId => { this.subModuleId = subModuleId }, error => { console.log(error) }, () => console.log("getModuleId")); } but it doesn't help.
1

голосов
0

ответ
190

Просмотры

Spring загрузка graphql-Java, подписка и streamlisteners

Я пытаюсь создать наблюдаемую из ответа streamlistener, но не в состоянии сделать это. Я совершенно новой идее EventObservable и реактивная Java. Было бы полезно, если бы кто-то может заглянуть в мой код, чтобы увидеть, если он был построен правильный путь, и если мое понимание концепции находится на правильном пути. @Component общественного класса EventObservable {частное Наблюдаемого наблюдаемый = новый Наблюдаемый () {@Override защищен недействительный subscribeActual (наблюдатель
1

голосов
1

ответ
181

Просмотры

How to use the Observables from HttpClient and paramMap together for a dynamically loading component?

У меня есть метод HTTPClient «получить», который возвращает массив JSON объектов. Кроме того, я в настоящее время с помощью ключа от маршрута Params извлечь один объект из этого массива. Компонент является динамическим, то есть при изменении маршрута Param, компонент не будет разрушаться. Проблема Когда новый маршрут пары включена компонент не изменяет selectedUser objecct. Зачем? Поскольку HttpClient завершает наблюдаемый поток после того, как один излучаемого элемента поэтому paramMap наблюдаемой также закрыт, так что не излучает, когда другое значение для изменения маршрута из параметров. например: «/ пользователь /: имя» «/ пользователь / боба» ---> компонент находит выбранный пользователь из компонента нового пользователя вводится «/ пользователь / джон» «/ пользователя джон /» ----> компонент Безразлично» т обнаружить новый параметр Вот фрагмент кода ниже (пользователей $ является http.get (наблюдаемой)). ngOnInit () {$ this.users .pipe (withLatestFrom (this.params $), карта (([пользователей, PARAMS]) => {вернуться users.find ((пользователь) => user.slug === params.landmark );})) .subscribe (пользователь => this.selecteduser = пользователь); }} EDIT: Переключение на combineLatest делает работу, но я должен был изменить наблюдаемую как таковой: ngOnInit () {$ this.params .pipe (combineLatest (this.users $, this.params $), карта (([PARAMS, пользователи]) => {this.users = пользователей; возвращают users.find ((пользователь) => user.slug === params.landmark);})) .subscribe (пользователь => this.selecteduser = пользователь); } PARAMS]) => {возвращение users.find ((пользователь) => user.slug === params.landmark); })) .Subscribe (пользователь => this.selecteduser = пользователь); }} EDIT: Переключение на combineLatest делает работу, но я должен был изменить наблюдаемую как таковой: ngOnInit () {$ this.params .pipe (combineLatest (this.users $, this.params $), карта (([PARAMS, пользователи]) => {this.users = пользователей; возвращают users.find ((пользователь) => user.slug === params.landmark);})) .subscribe (пользователь => this.selecteduser = пользователь); } PARAMS]) => {возвращение users.find ((пользователь) => user.slug === params.landmark); })) .Subscribe (пользователь => this.selecteduser = пользователь); }} EDIT: Переключение на combineLatest делает работу, но я должен был изменить наблюдаемую как таковой: ngOnInit () {$ this.params .pipe (combineLatest (this.users $, this.params $), карта (([PARAMS, пользователи]) => {this.users = пользователей; возвращают users.find ((пользователь) => user.slug === params.landmark);})) .subscribe (пользователь => this.selecteduser = пользователь); } PARAMS $), карта (([PARAMS, пользователи]) => {this.users = пользователей; возвращают users.find ((пользователь) => user.slug === params.landmark);})) .subscribe (пользователь => this.selecteduser = пользователь); } PARAMS $), карта (([PARAMS, пользователи]) => {this.users = пользователей; возвращают users.find ((пользователь) => user.slug === params.landmark);})) .subscribe (пользователь => this.selecteduser = пользователь); }
Kode_12
1

голосов
0

ответ
43

Просмотры

How get refreshed data from observable

У меня есть служба, которая кеширование полных ответов HTTP. Но при каждом вызове этой службы, что служба делает новый вызов к серверу для проверки новых данных. Если я загрузить страницу и регистрировать данные от службы (функций getGlobals) он записывает первый кэшированные данные и после того, что новые данные от службы. Страница однако только загружает первые данные в кэше, а не обновлять с новыми данными с сервера после того, как вызов HTTP готов. Я предполагаю, что это что-то делать с .then но .subscribe не допускается на обещании. Как я буду получать новые данные ответа от сервера на странице с сервисом как getGlobals? Обслуживание getGlobals () {вернуть новый Promise (решительность => {пусть URL = `$ {URL.getGlobals}`, пусть запрос = this.authHttp.get (URL) .map (Рез => res.json ()); пусть groupKey = 'слайдер'; пусть ТТЛ = 60; пусть delayType = 'все'; Пусть ответ = this.cache.loadFromDelayedObservable (URL, запрос, groupKey, TTL, delayType); response.subscribe (данные => {this.data = данные; console.log (this.data); // показать кэша и новая загруженная Решимость данных (this.data);}, ERR => {Решимость (ложь);} ); }); } Страница getGlobals () {. this.GetApi.getGlobals (), то (данные => {console.log (данные); // показывает только кэшированные this.createGlobals данных (данных);}, ERR => console.log ( ERR)); } response.subscribe (данные => {this.data = данные; console.log (this.data); // показать кэша и новая загруженная Решимость данных (this.data);}, ERR => {Решимость (ложь);} ); }); } Страница getGlobals () {. this.GetApi.getGlobals (), то (данные => {console.log (данные); // показывает только кэшированные this.createGlobals данных (данных);}, ERR => console.log ( ERR)); } response.subscribe (данные => {this.data = данные; console.log (this.data); // показать кэша и новая загруженная Решимость данных (this.data);}, ERR => {Решимость (ложь);} ); }); } Страница getGlobals () {. this.GetApi.getGlobals (), то (данные => {console.log (данные); // показывает только кэшированные this.createGlobals данных (данных);}, ERR => console.log ( ERR)); } } Страница getGlobals () {. this.GetApi.getGlobals (), то (данные => {console.log (данные); // показывает только кэшированные this.createGlobals данных (данных);}, ERR => console.log ( ERR)); } } Страница getGlobals () {. this.GetApi.getGlobals (), то (данные => {console.log (данные); // показывает только кэшированные this.createGlobals данных (данных);}, ERR => console.log ( ERR)); }
1

голосов
0

ответ
210

Просмотры

Тип «недействительным | Наблюдаемые »не может быть назначен для типа„ObservableInput “

Я получаю следующее сообщение об ошибке из приведенного ниже кода: ошибка TS2345: Аргумент типа «(ERR: любой) => недействительным | Наблюдаемый»не может быть назначен для параметра типа '(ERR: любой, пойманный: Observable) => ObservableInput. Тип «недействительным | Наблюдаемый 'не присваиваемый типа ObservableInput. Тип 'пустота' не может быть назначена для типа 'ObservableInput' Это мой код: перехватывать (Req: HttpRequest, следующий: HttpHandler): Наблюдаемое {вернуться next.handle (this.addToken (REQ, this.authService.getAuthToken ())) .catch (ERR => {если (ERR InstanceOf HttpErrorResponse) {переключатель ((ERR) .status) {случай 403: возвращение this.handle403Error (REQ, следующий); случай, 401: возвращение this.authService.logout (() => {Вернуть this.router.navigateByUrl ( '/ авт / Войти'); }); Случай 400: возвращение Observable.throw (ERR); по умолчанию: возвращение Observable.throw (ERR); }} Еще {вернуть Observable.throw (ERR); }}); }
1

голосов
1

ответ
1.1k

Просмотры

Patchvalue с нулевым объектом

Я использую Угловая 6, и я пытаюсь выполнить patchValue, чтобы заполнить мою форму с данными из наблюдаемого вызова HTTP. Все прекрасно работает, кроме меня есть значение secondaryPhone, которое может быть обнулить JSON, заполняющий наблюдаемый объект. Когда это нуль я получаю сообщение об ошибке «Не удается преобразовать неопределенное значение или нуль объекта». Я знаю, что может вручную исправить каждое значение в отдельности, если он не пустой, но есть способ, чтобы загрузить это значение без необходимости вручную исправить каждое значение? Model.ts экспорт класс UserInfoModel {идентификатор пользователя: номер; д.р.: Дата; Имя: строка; MiddleInitial: строка; LastName: строка; genderTypeId: номер; ssnLast4: строка; userAddresses: UserAddress []; primaryPhone ?: Телефон; secondaryPhone ?: Телефон; факс ?: телефона; } Экспорт класса Адрес {address1: строка; address2: строка; город: строка; stateCd: строка; ZipCode: строка; internationalAddress: строка; CountryId: номер; } Экспорт класса UserAddress {userAddressId: число; идентификатор пользователя: номер; активные: булево; адрес: Адрес; } Экспорт класса Телефон {phoneId: номер; phoneTypeId: номер; PHONENUMBER: строка; internationalPhone: строка; } Component.ts this.as.accountUserInfo (this.activeRoute $ .ActiveUserId) .subscribe (данные => {this.userInfoModel $ = данные как UserInfoModel; this.userInfoForm.patchValue (this.userInfoModel $);}); this.userInfoForm = this.fb.group ({ 'USERID': [ '', [Validators.required]], 'DOB': [NULL, [Validators.required]], 'FirstName': [ '', [Валидаторы .required, Validators.maxLength (50)]], 'MiddleInitial': [ '', [валидаторов. ZipCode ': ['», [Validators.required]], 'internationalAddress': [ '', [Validators.required]], 'CountryId': [ '', [Validators.required]]})})]), primaryPhone: this.fb.group ({ 'phoneId': [ ''], 'phoneTypeId': [ '', [Validators.required]], 'PhoneNumber': [ '', [Validators.required]], «internationalPhone ': [' '[Validators.required]]}), secondaryPhone: this.fb.group ({ 'phoneId': [ ''], 'phoneTypeId': [ '', [Validators.required]],' PhoneNumber ': ['», [Validators.required]], 'internationalPhone': [ '', [Validators.required]]})}); Пример Json { "
user1041169
1

голосов
2

ответ
56

Просмотры

Создание Observable от делегата события

Я должен отобразить входной сигнал от аппаратного устройства сделано с родным драйвером таким образом: GIS_LF_API.TSLF_SetReaderMode (ручки, 1); GIS_LF_API.TSLF_StartAutoRead (ручка, '\ г', AutoReadProc); AutoReadProc вызывается, когда вход приходит от аппаратного обеспечения и определяется таким образом, чтобы назвать мой OnCallback метода: частный GIS_LF_API.AutoReadCallback AutoReadProc = OnCallback; частный статический INT OnCallback (строка Arr, внутр Len) {// сделать нечто вернуть intValue; } Где AutoReadCallback в драйвер определяется следующим образом: общественный делегат INT AutoReadCallback ([MarshalAsAttribute (UnmanagedType.LPStr)] строка PDATA, внутр Len); Теперь я хочу, чтобы отобразить наблюдаемом, когда событие называется. Как можно это сделать? Я попытался с Observable.FromEventPattern, но я не найти способ отображения его.
Luigi Saggese
1

голосов
1

ответ
131

Просмотры

Oracle JET: Нокаут не обновляет переменную

У меня есть следующий оракул струйный и нокаут HTML версии файла Release Я следующий фрагмент JS файл self.addTagsToBuild = функция (данные) {self.jobDetails (данные); $ ( «# AddNewTag») ojDialog ( «открытый»);..} Поэтому в основном я вызываю функцию addTagsToBuild по нажатию кнопки, которая должна открыть диалоговое окно, и я хочу, начальное значение входного текстового поля, чтобы быть jobDetails () faReleaseVersion которые я объявил в данной привязке attribute.Unfotunately, когда я бег этого кода jobDetails () в настоящее время передаются в нуле и поэтому начальное значение входного текста с идентификатором = releaseVersion равно нулем. В чем может быть проблема? Любые указатели?
Chirayu Chirayu
1

голосов
2

ответ
686

Просмотры

Подождите несколько наблюдаемых в Угловой 5

Я новичок в Угловой и машинописи, поэтому вопрос может звучать неправильно. Я использую Visual Studio код и угловую 5 (нг-версию = "5.2.11"). Мне нужно «подождать» до моего вызова API закончится и вернуть это результат без упаковки все в гигантском «.subscribe». Что у меня есть: exampleMethod (): SettingsClass {сопз myComplexObject: SettingsClass = {field1: predefined.field1, field2: predefined.field2, field3: isComplexCalculationsNecessary? this.CallApi_1 (predefined.paramForField3): predefined.field3,}; вернуться myComplexObject; } Раньше у меня были все параметры в «предопределенный», но теперь мне нужно запросить одну (или более) из внешнего источника, и немедленно возвращает «myComplexObject» из метода (в какой-то другой апи вызова или другой компонент, или даже интерфейс, но Мне нужно этот объект полностью определен, со всеми параметрами устанавливается). Я мог бы превратить свой код «вверх-вниз» и поставить все внутри большой «.subscribe», но я dont't, потому что в какой-то момент я нужен другой параметр для запроса, а также, и все это будет ломаться. Как написать позвонить в апи, чтобы избежать перезаписи всех моих код каждый раз, когда мне нужно, чтобы добавить новый внешний вызов? Что-то вроде: CallApi_1 (paramForField3: строка): Наблюдаемое {вернуть this.http.get ( `$ {httpConfig.route} $ = применить фильтр $ {paramForField3} / $ {GroupBy httpConfig.groupingParam}`?); } Или, может быть CallApi_1 (paramForField3: строка): Наблюдаемое {вернуться this.ExternalCallsService.GetParam3Information (paramForField3) .subscribe (Рез => .GetParam3Information содержит тот же HTTP вызов, как указано выше, но мне нужно что-то сделать, чтобы вернуть этот результат на улице, я не знаю, что); } То, что я ищу некоторый король: field3: isComplexCalculationsNecessary? ** Await ** this.CallApi (predefined.paramForField3): predefined.field3, я в настоящее время пытаюсь «rxjs», которые имеют интересные варианты работы с наблюдаемыми характеристиками, как «forkJoin», но я не уверен, что я глядя в правильном направлении полностью, может быть, такой трюк невозможно, или мое понимание наблюдаемых не прав, и мне нужно, чтобы переместить сложную логику фонами? Пожалуйста, порекомендуйте. Важно отметить еще раз, что просто «.subscribe» не то, что я ищу, потому что во всех подписавшихся-примерах мы не возвращаются значения, но назначение его в некоторой глобальной переменной или непосредственно в HTML-элемент, и это не то, что я нужно, мне нужно, чтобы получить значение и продолжить работу с ней так быстро, как внешний ресурс будет вернуть его. paramForField3): predefined.field3, я в настоящее время пытаюсь «rxjs», которые имеют интересные варианты для работы с наблюдаемыми характеристиками, как «forkJoin», но я не уверен, что я смотрю в правильном направлении полностью, может быть такой трюк невозможно, или мое понимание наблюдаемого не право, и мне нужно, чтобы переместить сложную логику фонов? Пожалуйста, порекомендуйте. Важно отметить еще раз, что просто «.subscribe» не то, что я ищу, потому что во всех подписавшихся-примерах мы не возвращаются значения, но назначение его в некоторой глобальной переменной или непосредственно в HTML-элемент, и это не то, что я нужно, мне нужно, чтобы получить значение и продолжить работу с ней так быстро, как внешний ресурс будет вернуть его. paramForField3): predefined.field3, я в настоящее время пытаюсь «rxjs», которые имеют интересные варианты для работы с наблюдаемыми характеристиками, как «forkJoin», но я не уверен, что я смотрю в правильном направлении полностью, может быть такой трюк невозможно, или мое понимание наблюдаемого не право, и мне нужно, чтобы переместить сложную логику фонов? Пожалуйста, порекомендуйте. Важно отметить еще раз, что просто «.subscribe» не то, что я ищу, потому что во всех подписавшихся-примерах мы не возвращаются значения, но назначение его в некоторой глобальной переменной или непосредственно в HTML-элемент, и это не то, что я нужно, мне нужно, чтобы получить значение и продолжить работу с ней так быстро, как внешний ресурс будет вернуть его. как «forkJoin», но я не уверен, что я смотрю в правильном направлении полностью, может быть, такой трюк невозможно, или мое понимание наблюдаемого не прав, и мне нужен, чтобы переместить сложную логику фонов? Пожалуйста, порекомендуйте. Важно отметить еще раз, что просто «.subscribe» не то, что я ищу, потому что во всех подписавшихся-примерах мы не возвращаются значения, но назначение его в некоторой глобальной переменной или непосредственно в HTML-элемент, и это не то, что я нужно, мне нужно, чтобы получить значение и продолжить работу с ней так быстро, как внешний ресурс будет вернуть его. как «forkJoin», но я не уверен, что я смотрю в правильном направлении полностью, может быть, такой трюк невозможно, или мое понимание наблюдаемого не прав, и мне нужен, чтобы переместить сложную логику фонов? Пожалуйста, порекомендуйте. Важно отметить еще раз, что просто «.subscribe» не то, что я ищу, потому что во всех подписавшихся-примерах мы не возвращаются значения, но назначение его в некоторой глобальной переменной или непосредственно в HTML-элемент, и это не то, что я нужно, мне нужно, чтобы получить значение и продолжить работу с ней так быстро, как внешний ресурс будет вернуть его.
user3190541
1

голосов
0

ответ
96

Просмотры

Тест дребезг с мраморной диаграммой

У меня есть эпос, что дребезг, пока успешно не называйте пингом апи. Я успешно протестирован настольный корпус. Я хотел бы использовать импорт {TestScheduler} из «rxjs / тестирования»; и испытание, когда я не могу свистеть на 1 вызов, но успех в 2 с мраморной диаграммой. есть ли пример? экспорт Const resendData = (действие $, магазин $ {сервис}) => {возвращение действия $ .pipe (OfType (SOMETHING_FALL), дребезг (() => service.get ( '/ апи / пинг'). труба (retryWhen (ERR => err.pipe (сканирование ((акк, _) => согласно * 2, 2), delayWhen (значение => таймер (VAL * 1000)))), catchError (_ => пустой ())), ), карта (_ => retryAction ()),); }
Worathep Kamsang
1

голосов
0

ответ
111

Просмотры

RXJS6 WebSocket Темы Подписка проблема с Redux наблюдаемых характеристик

Я пытаюсь иметь связь по требованию wensocket в моем приложении React-Redux. RxJS дает webscoketSubject для управления webscokets. На приеме действия, я хочу, чтобы установить соединение с помощью webscoketSubject, для запроса последующего старта webscokets, я бы повторно использовать сокет, если устанавливается уже соединение. Но когда я делаю это, новая подписка становится создана в webscoketSubject ссылке я держу в памяти и причине того, что каждый раз, когда я получаю сообщение от сервера, я получаю повторяющиеся действия. Вот фрагмент кода. импорт {} OfType от 'Redux-наблюдаемого'; импорт {задержка, МАПТО, switchMap, mergeMap, карта, skipUntil, SkipWhile, takeUntil, catchError, возьмите} от 'rxjs / операторов'; импорт {Observable, DataEvent, WebSocket, из} от 'rxjs'; импорт {WebSocketSubject} от ' rxjs / WebSocket '; пусть гнездо; Const getWebSocket = () => {console.log ( "гнездо", гнездо); если (розетка) {console.log (socket.closed); } Если (розетка) {console.log ( "создание нового сокета"); Гнездо = ​​новый WebSocketSubject ( "WS: // локальный: 9091 / веб-розетка"); } Вернуть сокет; } // отображает полученое сообщение WebSocket для перевождь типа магазина сопзИте websocketMsgMapper = полезную нагрузка => {{возвращение типа: '' WORKFLOWS_RECEIVED, рабочие процессы: payload.workflows}}; экспорт Const openSocketEpic = действие $ => действие $ .pipe (OfType ( 'START_WEBSOCKET'), mergeMap (действие => {сопз сокет $ = getWebSocket (); console.log (розетка $); возвращение гнездо $ .pipe (карта ( websocketMsgMapper), takeUntil (действие $ .pipe (OfType ( 'STOP_WEBSOCKET'))), catchError (ошибка => из ({типа: ''} WORKFLOWS_RECEIVED_ERROR))); }));
saiki4116
1

голосов
0

ответ
49

Просмотры

Угловая canActivate возвращения Наблюдаемые не работает должным образом

Я пытаюсь создать контактную форму, которая, в случае успешного ответа API, перенаправляет пользователя к «Message Sent» страницы, которые должны отображаться только тогда и только тогда они на самом деле послал сообщение (и получил успех с сервера). HTML форма (contact.component.html), вероятно, не имеет значения, но я включу его в любом случае: {{pointOfContact.name}} Тема Очистить Тема требуется Название Clear {{emailMessage.sender.name? «Это имя является недопустимым»: «Пожалуйста, введите ваше имя»}} Электронная почта Очистить {{emailMessage.sender.email? «Пожалуйста, введите действительный адрес электронной почты»: «требуется E-mail» }} Сообщение Очистить сообщение требуется {{formError}} Отправить Email машинописи для этого компонента (contact.component.ts) функции, которые нужны для представления формы заключаются в следующем: SendEmail () {если (/ ^ ([AZ] @ [AZ]) [аз] $ / тест (this.emailMessage.sender.email)) {this.handleError ( "Bad электронная почта") возвращение..; } This.emailSender = (this.contactService Пошлите (this.emailMessage)) this.emailSender .subscribe (Рез => {console.log (RES); если (res.code === 200) {// размещать данные к "Message Sent" услуга»this.messageSentService.announceMessageSent (res.message) // TODO: nativate прямо на страницу успеха // this.router.navigate ([» messageSent ']) this.router.navigateByUrl (' контакт / messageSent ')} еще {this.handleError (res.message)}})} частных HandleError (причина: строка) {// сообщение об ошибке показать либо где-нибудь в форме или как модальный this.formError = причины; } MessageSentService импорт {Инъекционный} из "@ углового / ядра"; импорт {Subject} из "rxjs"; @Injectable () экспорт класса MessageSentService {// услуги, только чтобы объявить сообщение было успешно отправлено личное messageSentService = новый Rx.ReplaySubject (1); // Наблюдаемой строки потоки messageSent $ = this.messageSentService.asObservable (); // Служба сообщений Команда announceMessageSent (successMessage: строка) {this.messageSentService.next (successMessage); } AnnounceMessageFail () {this.messageSentService.next (); }} Охранник на компоненте для перенаправления (сообщение посланного-guard.ts) импорт {} MessageSentService от «../services/message-sent.service»; импорт {RouterStateSnapshot, CanActivate, маршрутизатор, ActivatedRouteSnapshot} из "@ углового / маршрутизатора"; импорт {первых, карта, switchMap, последний} из "rxjs / операторов"; импорт {NEVER, из, Observable} из "rxjs"; импорт {Инъекционный} из «@ угловой / ядра»; @Injectable () экспорт класс MessageSentGuard реализует CanActivate {конструктор (частный маршрутизатор: маршрутизатор, частное обслуживание: MessageSentService) {} canActivate (маршрут: ActivatedRouteSnapshot, состояние: RouterStateSnapshot): "Можете ли вы видеть меня" Наблюдаемые {console.log ( ) Вернуть this.service.messageSent $ .pipe (последняя (), карта (сообщ => !! тзд), switchMap (пересылаются => {console.log (пересылаются), если (! Пересылаются) {this.router.navigate ([ '/ дом']); возвращение NEVER;} console.log ( "перенаправление ...") возвращение (истина);})); }} "Сообщение отправлено" компонент машинопись файл (сообщение-sent.component.ts импорта {Component, OnInit, Input} от '@ угловой / ядро'; импорт {Подписка} из "rxjs; импорт {MessageSentService} от» .. /../../services/message-sent.service '; импорт {AutoUnsubscribe} от' ../../../auto-unsubscribe '; @Component ({селектор: 'приложение-сообщение-отправлено', templateUrl:». /message-sent.component.html 'styleUrls: [' ./message-sent.component.css']}) @AutoUnsubscribe экспорт класс MessageSentComponent реализует OnInit {сообщение: строка; Подписка: Подписка; конструктор (частный messageSentService: MessageSentService) {this.subscription = this.messageSentService .messageSent $ .subscribe (сообщение => {this.message = сообщение;})} ngOnInit () {}} Важно отметить, что этот компонент является ребенок ContactComponent. Результат Ничего не случилось! Кроме этого: Еще хуже то, что, когда я иду к самому MessageSentComponent (через его путь контакта / messageSent), я получаю пустой экран! Как это исправить?! UPDATE: Я сделал пару изменений в исходный код: изменение личное messageSentService = новый субъект (); частному messageSentService = новый Rx.ReplaySubject (1);
Mike Warren
1

голосов
0

ответ
296

Просмотры

NgRx эффекты Объедините действия и селектор с реквизитом

Я диспетчерское действие, и я хочу, чтобы справиться с побочными эффектами. Полезная нагрузка действия является идентификатором. Внутри эффекта я хочу, чтобы выбрать объект с идентификатором передается из магазина и в сочетании с действием. У меня возникли проблемы с логикой эффекта. экспорт Действие класса ActionX реализует Action {только для чтения типа = ActionTypes.ActionX; Конструктор (публичная полезная нагрузка: {идентификатор: строка}) {}} Selector экспорт Const selectById = createSelector (selectState (состояние: XState, реквизит) => {пусть индекс = state.entities.findIndex (OBJ => obj.id == = props.id); если (индекс> = 0) {возврата state.entities [индекс];} возвращать неопределенным;}); До сих пор у меня есть эффект @Effect ({отправка ложь}) actionX $ = this.actions $ .pipe (OfType (ActionTypes.ActionX), withLatestFrom ((действие: ActionX) => this.store. Труба (выбрать (selectById, {ID: action.payload.id}))), ...); ... где я не знаю, что делать. Обычно я хотел бы сделать mergeMap (([действие, OBJ]) => // сделать что-то)), но WebStorm указывает, что [действие, OBJ] имеет тип наблюдаемым и не тип массива. PS: У меня есть отправка: ложь просто так не бросает ошибку, когда я выяснить, как обращаться операторы Я диспетчерские и действий с некоторыми деталями от предыдущих операций. EDIT Теперь я знаю, что withLatestFrom не может быть функцией стрелка с параметром. Я был в состоянии найти это на StackOverflow: карта ((действие: LocalSubServiceTemplateActions.LoadLocalSubService) => action.payload.globalSubServiceId), (globalSubServiceId) => {вернуться withLatestFrom (this.store.pipe (выберите (fromLocalSubservices.getSearchParams (globalSubServiceId) ))); }, Но не мог»
João Ghignatti
1

голосов
0

ответ
102

Просмотры

rxjs concatMap не кажется, называется

Второй concatMap не дозвонились. this.apiService.get () .pipe (concatMap ((данные: MyModel) => {если (данные) {// следующие возвращает MyModel Наблюдаемые возврата this.apiService.update (данные);} еще {возвращать пустой () ;}}), concatMap ((данные: MyModel) => this.apiService.update (this.myOtherData))) .subscribe (данные => журнал ( 'завершено')); есть идеи?
Antediluvian
1

голосов
0

ответ
272

Просмотры

Используя обещание в угловом 7 директивы?

В «старые добрые дни» AngularJS у меня был хороший директиву на кнопки и ссылки, которые показала мне кок нагрузки во время запросов HTTP. Теперь я попытался восстановить это с угловыми 7 теперь, но я столкнулся с проблемами. Будем надеяться, что кто-то может помочь, пожалуйста ... В первый у меня есть Prety простой httpInterceptor испускать события, когда HTTP-запрос начинается и когда его остановки: импорт {HttpRequest, HttpHandler, HttpEvent, HttpInterceptor} от «@ угловой / общий / HTTP» ; импорт {инъекционные} от «@ угловой / ядро»; импорт {} Наблюдаемые из 'rxjs / Наблюдаемые'; 'Rxjs / добавить / оператор /, наконец,' импорт; импорт {LoadingService} от './loading.service'; @Injectable () экспорт класс LoadingInterceptor реализует HttpInterceptor {конструктор (частный loadingService: LoadingService) {} перехватывать (запрос: HttpRequest, следующая: HttpHandler): Наблюдаемое {this.loadingService.onNotify (истина) возвращение next.handle (запрос) .finally (() => {this.loadingService.onNotify (ложь)}); }} Это работает до сих пор. Теперь я создал службу для обработки событий: импорт {инъекционные} от «@ угловой / ядро»; импорт {Subject, BehaviorSubject} от 'rxjs'; @Injectable () экспорт класса LoadingService {// уведомит: Subject = новый Subject (); уведомить: BehaviorSubject = новый BehaviorSubject (ложь); OnNotify (событие) {this.notify.next (истина); }} ... и, наконец, моя директива: импорт {OnInit, Директива, ElementRef, Renderer2} от '@ угловой / ядро'; импорт {LoadingService} от './loading.service'; @Directive ({селектор: ' [Загрузки]}) экспорт класс LoadingDirective {конструктор (частный элемент: ElementRef, частный рендерер: Renderer2, частный loadingService: LoadingService) {console.log ( "ДИРЕКТИВА ЗАГРУЗКИ") this.renderer.addClass (this.element.nativeElement " требуется"); this.loadingService.notify.subscribe ((результат) => {console.log 'результат' (, результат)})}} Проблема в том, что не будет работать! Она составлена ​​успешно, но когда компонент, который использует [загрузки] тег пытался отображаться, я получаю консольного ошибка: ERROR Ошибка: "[объект Object]" resolvePromise Http: // Localhost: 4200 / polyfills.js: 3159: 31 resolvePromise HTTP: // локальный: 4200 / polyfills.js: 3116: 17 scheduleResolveOrReject HTTP: // локальный: 4200 / polyfills.js: 3218: 17 invokeTask HTTP: // локальный: 4200 / polyfills.js: 2766: 17 ... Почему не обещание не решен? Где моя ошибка? Я действительно надеюсь, что кто-то из вас есть решение моей проблемы.
Lars Hagen
1

голосов
2

ответ
54

Просмотры

Как излучать эпопею только, если другая эпопея закончена?

У меня есть 2 сущности: PAYEE и сделка. У меня есть payeeCreateEpic, что фильтры на начало излучает регулярную цепь закончена / не удалось. То же самое для transactionCreateEpic. Для простоты предположим, Payee имеют только UUID и имя. Сделка, однако, может иметь один из 3-х возможностей: Не прикреплено к любому получателю платежа (полезная нагрузка имеет получателя платежа: нуль), прикрепленная к существующему получателю платежа (на интерфейсе пользователя есть выпадающий список всех получателей, где он выбирает один, полезный груз, который имеет получателя платежа: получатель платежа -uuid) или прикреплен к несуществующему получателю платежа (на интерфейсе пользователь имеет возможность создать получатель платежа, который не сохраняется бакэнд, но должен быть сохранен, если вся транзакция будет сохранена, в полезной нагрузке Посылает получатель платежа: получатель платежа имя) , Теперь, если создать сделки представляется, не получателем платежа или существующего получателя платежа, Я просто пойти на POST / транзакций и ждать его, чтобы решить, чтобы испускать готовую или не действие transactionCreateEpic. Однако если! IsUuid (txPayload.payee) истинно, в эпосе transactionCreateEpic Я хочу, чтобы начать payeeCreateEpic с именем получателя платежа, и ждать закончил => затем создать транзакцию с идентификатором получателя из внутреннего интерфейса, или не => прервать транзакцию (и показать ошибку для пользователя). Я не знаю, как это сделать, так как в эпосе сделки, я уже внутри фильтра для действий TRANSACTION_CREATE_STARTED и не знаю, как я могу подписаться на другое действие, испускаемого payeeCreateEpic. Некоторые код: Const createPayeeEpic = (действия $: Observable) => действия $ .pipe (фильтр (CreateAction.start.match), mergeMap ((действие) => (от MoneyPinApiClient. . ДеЫпзЬапсе () payee.create (CreateRequestAdapter (action.payload))) трубы (карта ((ответ) => CreateAction.success ({PARAMS: action.payload, результат: CreateResultAdapter (response.data)}))., CatchError ((ERR) => из (CreateAction.failure ({Params: action.payload, ошибка: ERR}), MoneyPinApiErrorAction (ERR)))))); Const createTransactionEpic = (действия $: Наблюдаемые) => действия $ .pipe (фильтр (CreateAction.start.match), mergeMap ((действие) => {если (isUuid (action.payload.payee) {** EMIT PayeeCreateAction!. начать ({имя: action.payload.payee}) ** ** ОЖИДАНИЕ PayeeCreateAction.success (или PayeeCreateAction. недостаточность) ** action.payload.payee = resultOf (PayeeCreateAction.success) .id; } Возвращение из (MoneyPinApiClient.getInstance () transaction.create (CreateRequestAdapter (action.payload)).) Трубы (карта ((ответ) => CreateAction.success ({Params:. Action.payload, результат: CreateResultAdapter (response.data )})), catchError ((ERR) => из (CreateAction.failure ({Params: action.payload, ошибка: ERR}), MoneyPinApiErrorAction (ERR))))})); Посмотрите на createTransactionEpic, это где я с трудом на самом деле инициировать createPayeeEpic + ждать успеха неудачи. } Возвращение из (MoneyPinApiClient.getInstance () transaction.create (CreateRequestAdapter (action.payload)).) Трубы (карта ((ответ) => CreateAction.success ({Params:. Action.payload, результат: CreateResultAdapter (response.data )})), catchError ((ERR) => из (CreateAction.failure ({Params: action.payload, ошибка: ERR}), MoneyPinApiErrorAction (ERR))))})); Посмотрите на createTransactionEpic, это где я с трудом на самом деле инициировать createPayeeEpic + ждать успеха неудачи. } Возвращение из (MoneyPinApiClient.getInstance () transaction.create (CreateRequestAdapter (action.payload)).) Трубы (карта ((ответ) => CreateAction.success ({Params:. Action.payload, результат: CreateResultAdapter (response.data )})), catchError ((ERR) => из (CreateAction.failure ({Params: action.payload, ошибка: ERR}), MoneyPinApiErrorAction (ERR))))})); Посмотрите на createTransactionEpic, это где я с трудом на самом деле инициировать createPayeeEpic + ждать успеха неудачи. трубы (карта ((ответ) => CreateAction.success ({PARAMS: action.payload, результат: CreateResultAdapter (response.data)})), catchError ((ERR) => из (CreateAction.failure ({Params: действие. Полезная нагрузка, ошибка: ERR}), MoneyPinApiErrorAction (ERR))))})); Посмотрите на createTransactionEpic, это где я с трудом на самом деле инициировать createPayeeEpic + ждать успеха неудачи. трубы (карта ((ответ) => CreateAction.success ({PARAMS: action.payload, результат: CreateResultAdapter (response.data)})), catchError ((ERR) => из (CreateAction.failure ({Params: действие. Полезная нагрузка, ошибка: ERR}), MoneyPinApiErrorAction (ERR))))})); Посмотрите на createTransactionEpic, это где я с трудом на самом деле инициировать createPayeeEpic + ждать успеха неудачи. Ошибка: ERR}), MoneyPinApiErrorAction (ERR))))})); Посмотрите на createTransactionEpic, это где я с трудом на самом деле инициировать createPayeeEpic + ждать успеха неудачи. Ошибка: ERR}), MoneyPinApiErrorAction (ERR))))})); Посмотрите на createTransactionEpic, это где я с трудом на самом деле инициировать createPayeeEpic + ждать успеха неудачи.
Dmitry Kudryavtsev
1

голосов
0

ответ
45

Просмотры

Изменение статуса элемента в базе данных с помощью RxJava2

Мы используем базу данных номеров для хранения списка элементов, ожидающих загрузки, каждый элемент имеет статус загрузки (ЖДАТЬ, загружая, загруженный и FAILED), нужно, чтобы загрузить их последовательно. Таким образом, мы имеем случай использование, чтобы получить первые ЖДАТЬ или элемент UPLOADING и если мы нашли там элемент с государственной UPLOADING в базе данных, то мы не будем загружать другие до конца загрузки, то мы получим первый элемент Ожидая в базе данных для загрузки. Мы обновляем статус элемента следующим образом doOnSubscribe (закачивания), OnSuccess (Загрузил) и OnError (FAILED), мы должны начать новую загрузку независимо успех или неудачу. частная забава startUpload () {compositeDisposable.add (// Проверяем, если другой элемент загрузки getFirstDeviceMediaByUploadStatusUseCase. создание (deviceMedia)) .subscribeOn (executionThread.getIOThread ()) .observeOn (executionThread.getMainThread ()) {.subscribe startUpload ()})}))} частная забава stopForegroundService () {VCLogger.i ( "Остановка переднего плана обслуживания. «) // Остановка переднего плана службы и удалить уведомление. stopForeground (истина) // Остановка службы переднего плана. stopSelf ()} Каков наилучший подход к достижению такого поведения? observeOn (executionThread.getMainThread ()) {.subscribe startUpload ()})}))} частная забава stopForegroundService () {VCLogger.i ( "Остановка переднего плана обслуживания.") // Остановка переднего плана службы и удалить уведомление. stopForeground (истина) // Остановка службы переднего плана. stopSelf ()} Каков наилучший подход к достижению такого поведения? observeOn (executionThread.getMainThread ()) {.subscribe startUpload ()})}))} частная забава stopForegroundService () {VCLogger.i ( "Остановка переднего плана обслуживания.") // Остановка переднего плана службы и удалить уведомление. stopForeground (истина) // Остановка службы переднего плана. stopSelf ()} Каков наилучший подход к достижению такого поведения? подписаться {startUpload ()})}))} частная забава stopForegroundService () {VCLogger.i ( "Остановка переднего плана обслуживания.") // Остановка переднего плана службы и удалить уведомление. stopForeground (истина) // Остановка службы переднего плана. stopSelf ()} Каков наилучший подход к достижению такого поведения? подписаться {startUpload ()})}))} частная забава stopForegroundService () {VCLogger.i ( "Остановка переднего плана обслуживания.") // Остановка переднего плана службы и удалить уведомление. stopForeground (истина) // Остановка службы переднего плана. stopSelf ()} Каков наилучший подход к достижению такого поведения?
Ibrahim Disouki
1

голосов
1

ответ
100

Просмотры

RxSwift Chaining запросы

Проблема я столкнулся с в цепочки 2 запросов и обработки ошибок. Ниже приведен пример моего кода: FUNC fbLogin () -> Наблюдаемые {...} функ Userlogin (запрос: Request) -> Наблюдаемые {...} пусть signedWithLogin = loginTaps .asDriver (onErrorJustReturn: ()) {_ .flatMapLatest в обратном fbLogin () .map ({ReqestState.loaded ($ 0)}) .asDriver (onErrorRecover: {ошибка в ответ Driver.just (.error (ошибка))}) .startWith (.loading)} .map ({UserEndpoint .socialLogin (маркер: $ 0)}) {.flatMapLatest запрос в обратном Userlogin (запрос: запрос) .map ({ReqestState.loaded ($ 0)}) .asDriver (onErrorRecover: {ошибка в обратном Driver.just (.error (ошибка ))}) .startWith (.loading)} signedWithLogin .drive (onNext: {Ответ в печати (ответ)}) .disposed (по: disposeBag) Проблема заключается в том, когда я отменить facebook входа в всплывающее окно я отправляю () ошибка observer.onError FBLoginManagerError.canceled. Эта крылатая ошибка первой .asDriver (onErrorRecover: {метод ошибок, но does't пропуск в .drive (onNext: {responsemethod Как я могу поймать все ошибки в .asDriver (onErrorRecover:. {Метода ошибка?
Artem Krachulov
1

голосов
0

ответ
56

Просмотры

RxJS - Subscribe multiple times to Subject with Custom Operator

Question I've created a Subject, which emits a Value, every time the Content of a textfield changes. On this Subject i plan to run an analysis, based on the content emitted. Therefor i created three Subscribers, that all subscribes to the Subject. Inside the subscriptions i've run 1 Custom Operator to Make the formatting as i need it for the analysis. The Content that I pass into the Subject is an ops Array containing multiple Deltas inside (textfield is quill-editor field). The first operators just pulls all the content as a string and submit it. This works fine so far. The second one takes the ops-Array and emits every Delta in it as a single value. quillDeltaToObservable export const quillDeltaToObservable = () => (source) => new Observable(observer => { return source.subscribe({ next(x) { for (let i = 0; i < x.length; i++) { if (x[i].insert !== "") { observer.next(x[i]); } } }, error(err) { observer.error(err); }, complete() { observer.complete(); }, }); }); quillDeltaToFulltext export const quillDeltaToFulltext = () => (source) => new Observable(observer => { return source.subscribe({ next(x) { let text = ''; for (let i = 0; i < x.length; i++) { text += x[i]['insert']; } observer.next(text.trim()); }, error(err) { observer.error(err); }, complete() { observer.complete(); }, }); }); The Problem I've got 2 Subscriptions on my Subject, that both run the quillDeltaToObservable. The Second one that i am calling got kind of an input lag. For example if i run the following let Subject = new ReplaySubject(1); Subject.next({insert: 1}, {insert: 2}); Then inside my Subscription let subscriptionOne = Subject.pipe(quillDeltaToObservable) .subscribe(x => console.log("One:" + x); let subscriptionTwo = Subject.pipe(quillDeltaToObservable) .subscribe(x => console.log("Two: " +x); I would expect as an output One: 1 Two: 1 One: 2 Two: 2 What i got is: One: 1 One: 2 Two: 2 I'm not that sure if the problem belongs to a wrongly used subject or a mistake in my custom operator. Would be awesome if someone can help out!
Traxstar
1

голосов
1

ответ
42

Просмотры

Наблюдаемые / Предметные потери абонентов в Угловом

Я использую статический переменный в моем классе для хранения инициализируется BehaviourSubject, так что я могу предоставить по умолчанию, в то время как я загрузить настройки пользователя с сервера. (Поставил вырубать пример версию ниже) @Injectable AppSettings экспорта класса {// Использование статического глобализовать нашу переменный, чтобы получить // вокруг различных экземпляров делает много запросов. статические чтения валюты: Subject = новый BehaviorSubject ( 'USD'); // Возвращает свойство для общего потребления, но с использованием // глобальной / статической переменной, чтобы гарантировать, что мы называем только один раз. получить валюту (): Observable {возвращение AppSettings.currency; } LoadFromServer (): любой {// Broadcast валюта, как только мы вернемся // наших настроек данных с сервера. this.someService.getSettings (). подписаться (Настройки => {// это называется, наконец, но AppSettings.currency.observers // кажется, чтобы показать, как пустой массив в инспекторе ?? AppSettings.currency.next (settings.currency); }); }} Когда я присоединяюсь к нему позже в своем коде, он будет проходить через него один раз (так как это BehaviorSubject), но это не будет срабатывать после этого. экспорт класса MyComponent {общественная валюта: строка; конструктор (настройки: AppSettings) {// Вызывается один раз по умолчанию 'USD' settings.currency.subscribe (валюта => {// получает только здесь один раз, перед тем loadFromServer console.log (валюта); this.currency = валюты;} ); // Загрузка с сервера и иметь нашу подписку // обновляем нашу валюту собственность. settings.loadFromServer (); }} На loadFromServer () работает точно так, как и ожидалось, и линия (settings.currency) AppSettings.currency.next вызывается, и после первого события. Что интересно, однако, на данный момент, AppSettings.currency.observables [] пуст, когда он был ранее заполнен. Мои мысли мы изначально проблема разных экземпляров, но я использую статическую переменную (у даже попробовал глобальный), чтобы избежать различных экземпляров. Это текущий рабочий ... myComponent.constructor выписывает, что подписка на пожары, давая по умолчанию «USD» данные сервера загружается и AppSettings.currency.next (settings.currency) не называется ... потом ... ничего. ... Я ожидаю, что в части 4 наблюдателей, которые подписались в части 1 уволят снова, но это не так, что делает мой прославленный наблюдатель константы. :( Я что-то пропустил? ) Линия валюты вызывается, и после первого события. Что интересно, однако, на данный момент, AppSettings.currency.observables [] пуст, когда он был ранее заполнен. Мои мысли мы изначально проблема разных экземпляров, но я использую статическую переменную (у даже попробовал глобальный), чтобы избежать различных экземпляров. Это текущий рабочий ... myComponent.constructor выписывает, что подписка на пожары, давая по умолчанию «USD» данные сервера загружается и AppSettings.currency.next (settings.currency) не называется ... потом ... ничего. ... Я ожидаю, что в части 4 наблюдателей, которые подписались в части 1 уволят снова, но это не так, что делает мой прославленный наблюдатель константы. :( Я что-то пропустил? ) Линия валюты вызывается, и после первого события. Что интересно, однако, на данный момент, AppSettings.currency.observables [] пуст, когда он был ранее заполнен. Мои мысли мы изначально проблема разных экземпляров, но я использую статическую переменную (у даже попробовал глобальный), чтобы избежать различных экземпляров. Это текущий рабочий ... myComponent.constructor выписывает, что подписка на пожары, давая по умолчанию «USD» данные сервера загружается и AppSettings.currency.next (settings.currency) не называется ... потом ... ничего. ... Я ожидаю, что в части 4 наблюдателей, которые подписались в части 1 уволят снова, но это не так, что делает мой прославленный наблюдатель константы. :( Я что-то пропустил? в AppSettings.currency.observables [] пуст, когда он был ранее заполнен. Мои мысли мы изначально проблема разных экземпляров, но я использую статическую переменную (даже попробовал глобальный), чтобы избежать различных случаев , Это текущий рабочий ... myComponent.constructor выписывает, что подписка на пожары, давая по умолчанию «USD» данные сервера загружается и AppSettings.currency.next (settings.currency) не называется ... потом ... ничего. ... Я ожидаю, что в части 4 наблюдателей, которые подписались в части 1 уволят снова, но это не так, что делает мой прославленный наблюдатель константы. :( Я что-то пропустил? в AppSettings.currency.observables [] пуст, когда он был ранее заполнен. Мои мысли мы изначально проблема разных экземпляров, но я использую статическую переменную (даже попробовал глобальный), чтобы избежать различных случаев , Это текущий рабочий ... myComponent.constructor выписывает, что подписка на пожары, давая по умолчанию «USD» данные сервера загружается и AppSettings.currency.next (settings.currency) не называется ... потом ... ничего. ... Я ожидаю, что в части 4 наблюдателей, которые подписались в части 1 уволят снова, но это не так, что делает мой прославленный наблюдатель константы. :( Я что-то пропустил? м с использованием статической переменной (даже пытались глобальный), чтобы избежать различных экземпляров. Это текущий рабочий ... myComponent.constructor выписывает, что подписка на пожары, давая по умолчанию «USD» данные сервера загружается и AppSettings.currency.next (settings.currency) не называется ... потом ... ничего. ... Я ожидаю, что в части 4 наблюдателей, которые подписались в части 1 уволят снова, но это не так, что делает мой прославленный наблюдатель константы. :( Я что-то пропустил? м с использованием статической переменной (даже пытались глобальный), чтобы избежать различных экземпляров. Это текущий рабочий ... myComponent.constructor выписывает, что подписка на пожары, давая по умолчанию «USD» данные сервера загружается и AppSettings.currency.next (settings.currency) не называется ... потом ... ничего. ... Я ожидаю, что в части 4 наблюдателей, которые подписались в части 1 уволят снова, но это не так, что делает мой прославленный наблюдатель константы. :( Я что-то пропустил? м, ожидая, что в части 4 Наблюдателя, который подписался в части 1 уволят снова, но это не так, что делает мой прославленный наблюдатель константы. :( Я что-то пропустил? м, ожидая, что в части 4 Наблюдателя, который подписался в части 1 уволят снова, но это не так, что делает мой прославленный наблюдатель константы. :( Я что-то пропустил?
Guy Park
1

голосов
0

ответ
29

Просмотры

Почему OnCompleted для Observable не имеют значения формы?

Цель: Я хотел бы получить значение входа на угловой реактивной форме. Я видел, что он был нулевым, если я не сделал перерыв, поэтому я попытался с помощью OnCompleted () из наблюдаемых Согласно RXJS Наблюдаемые DoSomething OnComplete и https://angular.io/api/forms/FormGroup#addcontrol я полагал, что я должен был бы использовать метод addControl. Однако я не могу получить значение (она выводит на консоль в нуль) ngOnInit () {GetUserProfile (); } Общественных GetUserProfile () {this.aa.GetProfile (ID) .subscribe (соответственно => {this.user = соответственно; this.aa.GetPref (ID) .subscribe (соответственно => {this.email = resp.Email; // Форма this.createForm конфигурации (); this.isLoaded = TRUE;})}, ERR => {console.log (ERR);}, () => {Console.log ( "О закончено?"); . This.spanish = (document.getElementById ( "Испанский2")) значение console.log (this.spanish); this._profileForm.addControl ( 'Испанский3', новый FormControl (this.spanish)); }); } CreateForm () {this._pForm = this.fb.group ({ 'Испанский2': новый FormControl ()}); } Фактический результат: Он печатает «На завершена?», Но он также говорит: «Не удается прочитать свойство„значение“нуль» со ссылкой на:. This.spanish = (document.getElementById ( «Испанский2»)) значение я ожидал чтобы иметь значение в этой точке. Это работает только если я использую SetTimeout. HTML:
seesharp
1

голосов
1

ответ
82

Просмотры

разница между взятием (1) и отписать [дублировать]

Этот вопрос уже есть ответ здесь: Разница между .unsubscribe к .Снять (1) 1 ответ Угловое / RxJs Когда я должен отказаться от `Subscription` 15 ответов, скажем, я не использую асинхронной трубы. и я хочу, чтобы подписаться на что-то component.ts файл. как вы знаете, я должен отказаться сам, если это не запрос HTTP. вот то, что я пытался. способ 1) осуществлять OnDestroy крюк и отписываться там путь 2) при подключении, используйте взятие (1). принять (1) будет заботиться о отпиской себя. мой вопрос - почему бы кто-нибудь выбрать путь 1 и которую мы должны использовать, когда мы хотим отказаться (если нам не нужен асинхронная труба)
Nika Khurashvili
1

голосов
2

ответ
76

Просмотры

Как ждать для каждого значения наблюдаемого с обещанием

Скажем, у меня есть эта наблюдаемую: Const набл = новый Наблюдаемый ((наблюдатель) => {observer.next (0,25); observer.next (0,75); observer.next (новый ArrayBuffer (100)); observer.complete (); }); Как я могу ждать для каждого значения с обещанием? Следующий код будет возвращать только последнее значение (значение до завершения () называется): константное значение = ждет obs.toPromise (); Но я хочу, чтобы иметь возможность получить каждое значение по пути. Я могу сделать что-то вроде этого: константные value1 = ждут obs.pipe (взять (1)) toPromise ();. константные value2 = ждут obs.pipe (взять (2)) toPromise (). Но это не является идеальным, так как я должен был бы увеличивать число каждый раз, а также принимать (1000) будет по-прежнему возвращать что-то в этом примере, несмотря на то, есть только три значения. Я ищу что-то вроде: Const значению1 = ждут obs.pipe (следующая ()) toPromise ();. // 0. 25 = Const value2 ждут obs.pipe (следующий ()) toPromise (). // 0.75 Const значение3 = ждут obs.pipe (следующий ()) toPromise (). // ArrayBuffer (100) Const = value4 ждут obs.pipe (следующий ()) toPromise (). // нуль Это больше похоже на генератор. Есть ли способ сделать что-то вроде этого?
maximedupre
1

голосов
1

ответ
496

Просмотры

Missing Observable reference in LinqPad 4?

I tried the following test in LinqPad 4 and got an "Observable not in context" error. The IEnumerable branch works, and, oddly enough, I don't get an error for IObservable itself, just for the static method Observable.Range. static void Main() { IEnumerableSieve(); IObservableSieve(); } private static void IEnumerableSieve() { IEnumerable oddsFrom3 = IntsFrom(3, 2); List cache = new List() { 2 }; IEnumerable primes = oddsFrom3. Where(candidate => cache.TakeWhile(prime => prime * prime candidate % trialDivisor == 0).Count() == 0); Console.WriteLine("IEnumerable oddsFrom3:"); foreach (int p in primes.Take(20)) { Console.WriteLine("{0}", p); cache.Add(p); } } private static void IObservableSieve() { const int bigMax = 1
RebCabin
0

голосов
0

ответ
22

Просмотры

Java слушатель вызова метода [дубликат]

Этот вопрос уже есть ответ здесь: Java: Как прослушивают методы вызова без регистрации каждого объекта явно? 3 ответа Слушатель на Method.invoke Java 1 ответ У меня есть класс Person, и я хотел бы знать о каждом вызове getFirstName () метод: класс Person {общественного частный Струнного ПгвЬЫат; частная строка LastName; общественное лицо () {...} общественность Строка getFirstName () {вернуться this.firstName} // ... Остальные добытчиков и сеттеров} Итак, когда кто-то делает это, я хотел бы напечатать «Привет мир», например, (фактическое использование будет более сложным): открытый класс Main {государственной статической силы основных (String [] арг) {Person человек = новое лицо ( "Джон", "Doe"); person.getFirstName (); } Однако я хочу сделать это без изменения класса Person (по крайней мере, до компиляции). Я читал STH о наблюдаемых шаблон и изменить свойство радиослушателей, но, кажется, они не будут делать то, что я хочу. Есть такая вещь, даже возможно в Java?
Matis
2

голосов
1

ответ
71

Просмотры

Тестирование последовательность REST API вызовы - «не было никакой текущей спецификации»

Я пытаюсь проверить последовательность создания / удаления по REST-сервис. В приведенном ниже примере всегда проходит в IDE, но выдает ошибку в отладчике Karma / Жасмин. «Xpect» был использован, когда не было никакой текущей спецификации, это может быть потому, что асинхронный тест тайм-аут»Каждый тест в одиночку работает нормально. он ( 'должен возвращать количество удаленных элементов после создания', сделано => {сопз EX1 = sgformsService.getOrCreate ( 'Endoskopie', 9999, '2019-03-20') Const ех2 = sgformsService.deleteByParameter ( 'Endoskopie', 9999, '2019-03-20') Const ех = ex2.pipe (CONCAT (EX1)) подписаться ((значение: число). => {ожидать (значение) .toEqual (7) сделано ()})})
Dieter Menne

Просмотр дополнительных вопросов