【问题标题】:Async HTTP call until condition is met in Angular异步 HTTP 调用,直到在 Angular 中满足条件
【发布时间】:2019-11-27 15:45:08
【问题描述】:

我在 Angular 中有一个 HTTP 调用,它返回一个承诺。我正在使用 setTimeout 在间隔后刷新呼叫。是否可以使用一些可以完成这项工作的内置函数/模式?

【问题讨论】:

    标签: angular typescript promise


    【解决方案1】:

    是的,你可以很容易地使用 RXJS。但是当然不使用 Promises,而 rxjs 的强大之处在于其强大的操作符(如区间)。

    interval(1000)
    .pipe(
        switchMap(() => this.http.get('...url...')),
        map(response => {
             if(response.statusCode == 1) return response.data;
             else return undefined; //or some error message or data.
        })
    )
    .subscribe(response => {
      // do somthing with the response that will come in one second interval
    });
    

    基本上它看起来像这样。但是,如果您提供自己的代码,我们可以帮助您仅使用 rxjs 完全按照您的意愿转移工作。这是一个非常强大的库,建立在非常好的可观察设计模式之上。

    【讨论】:

    • 根据响应中检查的条件,我们如何摆脱这种情况?
    • 我们可以使用map 运算符和条件。我会为你更新答案。
    • 我不明白“爆发”部分。你能详细说明一下吗?
    • 另外,我得到这个:属性 'pipe' 在类型 'Observable' 上不存在
    • @awesomemypro 您使用的是哪个版本的 RXJS?因为旧版本需要一些不同的语法,这里 map 运算符背后的想法是根据您想要的某些条件切换您的管道返回值。请记住,如果您只希望一个条件成立,您可以使用 @987654323 @运营商..检查一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2014-10-18
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2019-12-23
    相关资源
    最近更新 更多