首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RXJS:响应后请求

RXJS:响应后请求
EN

Stack Overflow用户
提问于 2019-09-26 11:17:32
回答 3查看 258关注 0票数 0

我想创建一个可观察的处理这些问题的方法:

request

  • Response

  • wait
  1. 可观察到的
    • 5秒,并再次执行请求。

我现在的职责是:

代码语言:javascript
运行
复制
  getData (): Observable<CurrentData> {
    return interval(5000)
      .pipe(
        flatMap(() => "HTTP REQUEST",
        ),
        map(this.extractData, this))
  }

但是我的函数没有等待成功的响应,我的函数每5秒试一次请求。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-26 13:34:06

可以使用exhaustMap运算符,它将忽略,直到最后一个操作符完成为止。

代码语言:javascript
运行
复制
getData (): Observable<CurrentData> {
return interval(5000)
  .pipe(
    exhaustMap(() => "HTTP REQUEST",
    ),
    map(this.extractData, this))
}
票数 0
EN

Stack Overflow用户

发布于 2019-09-26 11:30:44

用户repeattimer操作符,或repeatWhen

代码语言:javascript
运行
复制
  getData (): Observable<CurrentData> {
   return httpRequest().pipe(map(.....),timer(5000),repeat())
  }



  getData (): Observable<CurrentData> {
   return httpRequest().pipe(map(.....),repeatWhen(()=>timer(5000)))
  }
票数 2
EN

Stack Overflow用户

发布于 2019-09-26 11:27:59

您可以尝试以下方法。首先创建一个BehaviorSubject并在您的服务中观察到

代码语言:javascript
运行
复制
private mySubject: BehaviorSubject<any> = new BehaviorSubject<>(null);
myObservable$: Observable<any> = this.mySubject.asObservable();

然后创建函数,该函数一旦进入无限循环就会被触发。

代码语言:javascript
运行
复制
loop() {
  var that = this;
  this.http.get(myUrl, { headers }).subscribe(
    (data: any) => { 
       this.mySubject.next(data);
       setTimeout(function () {
          that.timeout();
      }, 5000);
  } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58115656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档