- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一种方法来利用 RxJS 5 来处理在任意时间触发的请求并仅发出最新结果。
我正在尝试使用 Subject
和 switchMap
来解决这个问题。理想情况下,我想观察字符串值(url)并发出响应。如果在收到任何先前的响应之前观察到新的 url,则应该将其忘记(或取消 - 我相信这个实际上是在 switchMap
中实现的)。
我已成功生成以下代码:
const stream$ = new Rx.Subject()
.switchMap(url => Rx.Observable.fromPromise(
fetch(url).then(res => res.json())
))
.subscribe(res => console.log(res));
stream$.next('https://some-api-server.com/1');
stream$.next('https://some-api-server.com/2');
stream$.next('https://some-api-server.com/3');
根据我对 switchMap
的理解,控制台输出应该只显示上次请求的结果。相反,它显示了我传递给 stream$
的 url。我哪里错了?
最佳答案
您的代码可以重写如下:
const subject = new Rx.Subject();
const stream$ = subject
.switchMap(url => Rx.Observable.fromPromise(
fetch(url).then(res => res.json())
));
const subscription = stream$.subscribe(res => console.log(res));
subscription.next('https://some-api-server.com/1');
subscription.next('https://some-api-server.com/2');
subscription.next('https://some-api-server.com/3');
而且,如您所见,您正在将 url 推送到订阅中,而不是推送到主题中……不确定为什么它有 next
方法,也许是实现细节。
要使其正常工作 - 将 url 推送到 subject
变量
关于javascript - 使用 RxJS 的 switchMap 限制请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51992832/
我不知道这之间是否有区别: Observable.pipe( switchMap((res) => { ... }),
我有以下代码 const mySource:Observable[]> (...) mySource.pipe( switchMap(arr=>forkJoin(arr)); ) 按预期工作,但
我正在尝试将 ViewModel 与某些 LiveData 一起使用,这些 LiveData 使用另一个 LiveData 的值。 为此,我尝试使用 Transformations.switchMap
我有以下组件: @Component({...}) export class AppComponent implements OnInit, OnDestroy { destroy$ = new
以下用例:用户可以加入 0...* 组。每个组都有一个 ID 并包含 0...* 个帖子。 我订阅了一个 Observable(以获取他加入的用户的组)并返回一个字符串数组(组 ID)。 const
我有 3 个端点返回即将发生的、当前的、过去的事件。我应该只显示 future 最远的那个。为了优化调用而不是一次调用所有端点。我编写了一个简单的 RxJs 流,我在其中调用第一个端点,如果它不返回数
我有一个表单,其中有一个按钮,可以使用表单的内容发送电子邮件。我想使用 switchmap,因为我想防止用户垃圾点击并创建大量 HTTP 请求,但我不知道该怎么做。 使用 switchmap 之前:
我正在尝试使用 switchMap 运算符切换可观察值: return this.db.list(`UserPlaces/${this.authData.auth.auth.currentUser.u
我尝试执行以下搜索: 我想根据第一个 id 搜索某些内容,这会返回一个 FirebaseListObservable。然后我尝试在 Observable 的 switchMap 函数中执行代码,因为搜
Observable .interval(2, TimeUnit.SECONDS) .switchMap(integer -> Observable
我遵循了教程 Angular Tour of Heroes 和其他一些教程,现在我正在尝试使用 Angular 2 构建应用程序。基本上,当我们正在监听 Subject 的变化时,我们可以等待几秒钟,
我有一个 Angular 应用程序,它向 Http 服务发出请求并在另一个 Http 服务上调用 switchMap。由于某种原因,switchMap 中的请求仅在第一次调用父调用时运行。否则父请求会
Angular 和 RxJS 的新手,试图稍微了解一下...我的应用程序对 UI 事件使用react,结果调用返回 Observable 的 HTTP 服务。我这样订阅: this.myXYZServ
我想解析一个 observable,但我不希望返回值替换管道中的先前值。有没有异步tap() ?我需要一个像 switchMap 这样的运算符(operator)但我想忽略返回。 of(1).pipe
我有一个 Observable,其中每个新值都应该引起一个 HTTP 请求。在客户端,我只关心最新的响应值;但是,我希望每个请求都能完成以进行监控/等。目的。 我目前拥有的是这样的: function
我有 HTTP 拦截器。在那个拦截器中,在我更改请求之前,我需要打开一个加载程序。 真正让我担心的是,我最终有很多 switchMap s。 为什么? 加载器是异步的 我还需要翻译从拦截器传递到加载器
这个问题已经有答案了: Angular 7 - nesting Observables (1 个回答) 已关闭 4 年前。 我正在尝试按照 Angular Routing 中有关如何获取路由参数的教程
我在使用 ngrx.store 和 states 时遇到了错误(?)。 在我调度新状态并且 reducer 返回新状态之后什么都没有发生。订阅不会收到任何错误消息。如果我删除 switchMap,代码
目前我有这段代码 this.save() .pipe(switchMap(() => this.unlock())) .subscribe(...); save 和unlock 实现是 pri
如果满足条件,我将尝试从 switchmap 返回一个值,但它返回的是拆分为单个字符的 console.log。因此,如果 Angular 色以 Buyer 身份返回,则它以 身份返回 console
我是一名优秀的程序员,十分优秀!