RXJS将Observable转换为boolean

时间:2018-11-28 15:59:41

标签: angular rxjs

你好,我正在尝试编写这样的函数

 verify(){
    return this.http.post(environment.api+'recaptcha/verify',{
      token : this.token
    }).pipe(map(res=>res.json()));
  }

我想像布尔值一样使用它

if(this.verfiy()) { do something}

如何,现在我必须先下标并处理数据

3 个答案:

答案 0 :(得分:3)

由于您的HTTP调用是异步的,因此您必须等待其响应。 试试这个:

this.verify().subscribe(
   res => {
       if (res) {
           // do something
       }
   }
)

答案 1 :(得分:0)

我会做这样的事情

verify(){
    return this.http.post(blah)
        .pipe(
            map((res: any) => res.json()),
            filter(json => json)
        );
}

仅当json不伪造时,过滤器才会返回。

因此,您可以执行以下操作:

service.verify().subscribe(()=>{
    // This code only will fire when the json was not falsy
    console.log("We verified it");
})

答案 2 :(得分:0)

如果您希望verify函数订阅并根据http响应确定boolean,请在您的verify函数而不是管道中使用Subscribe

verify(){
    this.http.post(environment.api+'recaptcha/verify',{
      token : this.token
    }).subscribe(res=> {

                        //do your logic to return boolean
                        return res.json();
                       });
  }