RXJS Конвертировать наблюдаемый в логическое значение - PullRequest
0 голосов
/ 28 ноября 2018

Здравствуйте, я пытаюсь написать такую ​​функцию

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

Я хочу использовать ее как логическое значение, например

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

Как, Теперь я должен сначала подписать и обрабатывать данные

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Я бы сделал что-то вроде этого

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");
})
0 голосов
/ 28 ноября 2018

Если вы хотите, чтобы функция verify подписывалась и определяла boolean на основе ответа http, Subscribe внутри вашей функции проверки вместо конвейера.

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

                        //do your logic to return boolean
                        return res.json();
                       });
  }
0 голосов
/ 28 ноября 2018

Поскольку ваш HTTP-вызов асинхронный, вам придется ждать его ответа.Попробуйте это:

this.verify().subscribe(
   res => {
       if (res) {
           // do something
       }
   }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...