javascript - 在满足条件之前无法使用计时器调用嵌套函数?

标签 javascript jquery angular

我有 2 个调用一些 API 的方法:

  1. getData(param)
  2. getAnotherData(分别从获取数据)

下面的方法调用第一个方法:

this.service.getData(param).subscribe(res => {
    this.variable = res;

    // here based on the first response i will call the second api 

    this.service.getAnotherData(this.variable['data']).subscribe(res2 =>  

    // Here, I will get a response which will be either "started"
    // or not "started". If it's not "started", then I have to call
    // this API until I get "started" for up to 1 minute.
)})

我怎样才能实现这个目标?

最佳答案

  1. 尽量避免嵌套订阅。相反,请尝试使用更高阶的映射运算符,例如 switchMap

  2. 您可以使用 RxJS repeattakeWhile 运算符再次订阅可观察对象,直到它满足条件。

尝试以下操作

this.service.getData(param).pipe(
  switchMap(res => 
    this.service.getAnotherData(res['data']).pipe(
      repeat(),
      takeWhile(res => res === 'started')      // poll `getAnotherData()` until response is 'started'
    )
  )
).subscribe(
  res => { },
  err => { }
);

关于javascript - 在满足条件之前无法使用计时器调用嵌套函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63916159/

相关文章:

javascript - 完成所有ajax查询后执行一个函数

javascript - 需要在ExtendScript中为Windows系统生成UUID

javascript - 如何获取使用地理定位创建的动态内容并在另一个 div 中使用它?

javascript - jQuery 数据表清除标题中的单选按钮

javascript - ng样式 : Error saying "Missing expected }"

angular - @ContentChildren 返回空列表,如果内容通过 2 个组件

javascript - 按钮添加一行并从文本字段输入单元格值

javascript - 响应式导航栏设计

c# - 如果验证错误则停止回发

angular - 通过控制台获取服务实例