javascript 如何决定是否调用HTTP请求并执行订阅体

628mspwn  于 2023-05-12  发布在  Java
关注(0)|答案(1)|浏览(91)

我有一些这样的代码:

this.service.callAPI().subscribe(
     data =>  {
              callFunction();
     },
     error => {console.log("Mi mistake")}
    );

但是我想“怀疑”我是否调用了 callAPI(),我的意思是,我想有机会检查一些条件,然后决定是否调用callAPI(),然后,不管是否被调用,只要执行callFunction()。但是,我不想重复代码,我不想这样做:

if(condition==true){
     this.service.callAPI().subscribe(
       data =>  {
              callFunction();
       },
       error => {console.log("Mi mistake")}
     );
    }
    else{
      callFunction();
    }

我在猜测是否有一些语法允许表达这种情况,而不必重复两次callFunction()代码,语义上是这样的:

this.service.callAPI().continueIfCondition(condition).subscribe(
     data =>  {
              callFunction();
     },
     error => {console.log("Mi mistake")}
    );

如果满足条件,它将跳过调用callAPI()方法,而只是继续执行订阅主体。相反,如果条件为false,则只需等待响应到达时执行。
Observables是否有能力做到这一点?我是否缺少一些基本文档?谢谢

3pvhb19x

3pvhb19x1#

您可以使用of(true) observable:

import { of } from 'rxjs';

const callApiIfCondition = () => {
  return condition ? this.service.callAPI() : of(true);
}

callApiIfCondition().subscribe(() => callFunction());

相关问题