网站搜索

javascript - RXJS Angular - 如何在包含 observables 的 foreach 循环结束时调用一个函数?

this.attachmentList.forEach((attachment, i) => { this.service.getPageOfAttachment().flatMap(response => this.service.download((JSON.parse(response['Content']).mediaUrl))) .subscribe(response => { }, error =&g

阅读更多 →

javascript - 如何在 RxJS 中有选择地发出热(共享)可观察对象?

在我的代码中,我有一个热可观察对象(通过 share() 操作符管道的冷可观察对象),它发出带有标识符的值(即负载类型包含一个 "id" 字符串属性)。随后有一堆观察者根据该 id 过滤发出的值。

我现在认为我的代码性能受到了很大影响,因为每个观察者都必须过滤每个发出的值。或者更确切地说,每次我需要一个新的观察者订阅共享的可观察对象时,都会创建一个新的过滤后的可观察对象。代码大致如下:

const source = new Observable(); const sharedObservable = source.pipe(share()); sharedObservable .pipe(filter(payload => payload.id === "id1")) .subscribe(observerOne); sharedObservable .pipe(filter(payload => payload.id === "id2")) .subscribe(observerTwo); //

阅读更多 →

typescript - Angular 6 - rxjs 属性 'map' 在类型 'observable' 上不存在

升级到 Angular 6 时出现此错误。我看到文档中提到使用 .pipe(),但我不明白当有多个 .map() 时如何使用 pipe,如下所示。需要你的帮助...

import {Injectable} from '@angular/core'; import {Http, Headers} from '@angular/http'; import 'rxjs/add/operator/map'; import {TOKEN_AUTH_PASSWORD, TOKEN_AUTH_USERNAME} from '../s

阅读更多 →

typescript - 使用 RxJS fromEventPattern 处理 React Native 事件

我正在尝试在 React Native 中使用 RxJS 过滤原生事件。我正在使用 react-native-ble-manager,它提供了一个 EventEmitter。基本上,不使用 RxJS 时,我是这样做的(这里只显示相关代码):

import React from 'react'; import RX from 'reactxp'; import { AppState, Platform, NativeModules, NativeEventEmitter, EmitterSubscription, PermissionsAndroid, ListView } from 'react-native'; import BleManager, { Peripheral } from 'react-native-ble-manager'; const BleManagerModule = NativeModules.BleManager; const bleManagerEmitter = new Native

阅读更多 →

javascript - 取消订阅 RxJS 后,有办法重新订阅吗?

这是一个示例代码,它订阅了 HTTP 请求,并在页面上鼠标点击时取消请求。如果我再次点击,我希望能够重新订阅。

我如何切换订阅? FIDDLE

export class AboutComponent implements OnInit { constructor(private http:HttpClient){ } flag=true; documentclick = fromEvent(document, 'click'); private data = { name: 'Samurai', profession: 'Develo

阅读更多 →

angular - RxJS/Observable:如何为 pipe 方法设置排序

我在类Some中有一个方法run,它返回Observable,并且在这个方法内部有pipe。当执行方法run时,我还有一个额外的pipe。

import { of } from 'rxjs'; import { map, tap, delay } from 'rxjs/operators'; class Some { run() { return of('Some request').pipe( tap((res) =>

阅读更多 →

javascript - 在 angular rxjs 的 find 函数中使用管道时,寻找类似 OrElse 的东西

我有如下代码。我想要实现的是,当“find”函数在可观察的已加载订单中找不到任何订单对象时,重定向到页面未找到。

private order: Observable<OrderModel>; ngOnInit() { this.route.params.subscribe(params => { this.name = params.id; this.order = this.orderService.ordersLoaded.pipe(map(

阅读更多 →

angular - 如何使用 rxjs 的 "find" 操作符

我想将 nameMatch 设置为 nodeName,如果 nodeName 出现在可观察流中。idMatch 也是同样的情况。我正在尝试使用 find rxjs 操作符。这是我当前的代码:

const response = (this._resourceService.search(ResourceUrns.SERVICE_METRIC) .pipe( map(getServiceNodes)) .subscribe(result => { if (result.find(nodeName)){ this.nameMatch=(nodeName); } else{ this.nameMatch=

阅读更多 →

angular - Rxjs timeout() 对某些未来日期抛出错误

Rxjs timeout() 对某些 天数 或 时间戳 无法正常工作

import { interval } from 'rxjs'; import { timeout } from 'rxjs/operators'; const seconds = interval(1000); seconds.pipe( // Present Date (Thu Mar 19 2020 14:40:58) => 1584628858530 // to UTC time & date: (Wed Dec 30 2020 18:30:00) => 1609353000000-------Not working // to UTC time & date: (Mon Dec 30 2030 18:30:00) => 1924885800000-------Working timeout(new Date(1609353000000)), // rep

阅读更多 →

typescript - RxJS - 将 promise 链转换为 observable 不起作用

我正在尝试转换 Promise 链式调用:

this.tradeTypesLogicService.getList().$promise .then(this.filterTradeTypes) .then(this.setSelectedTradeType)

到一个 RxJS 可观察对象:

this.tradeTypesLogicService .getList() //returns observable now .pipe(mergeMap(this.filterTradeTypes), map(this.setSelectedTradeType)) .subscribe(); protected filterTradeTypes = (tradeTypes: Array<any>) => { this.tradeTypes = filter(tradeTypes, (trade) => { i

阅读更多 →