你好,我正在尝试编写这样的函数
verify(){
return this.http.post(environment.api+'recaptcha/verify',{
token : this.token
}).pipe(map(res=>res.json()));
}
我想像布尔值一样使用它
if(this.verfiy()) { do something}
如何,现在我必须先下标并处理数据
答案 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();
});
}