如何解决创建一个内部有可观察的可观察函数
我正在尝试创建一个可观察函数,该函数使用其内部的可观察对象进行工作。
verifyinteraction(action): Observable<any>{
return this.recaptchaV3Service.execute(action)
.subscribe((token :any)=>{
this.http.post(
'http://127.0.0.1:8000/verify/recaptcha',token);
});
}
此操作然后传递给recaptchaV3Service
然后订阅该服务,并将该订阅的结果传递到我的服务器以进行工作,然后返回。 verifyinteraction
的订阅
是这两个动作的结果。
- error TS2740: Type 'Subscription' is missing the following properties from type 'Observable<any>': _isScalar,source,operator,lift,and 6 more.
13 return this.recaptchaV3Service.execute(action)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14 .subscribe((token :any)=>{
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
17 token);
~~~~~~~~~~~~~~~~~
18 });
~~~~~~~~~
对我所缺少的东西有了解吗?有人可以帮我清理一下吗?
解决方法
您可以使用RxJS高阶映射运算符之一(例如switchMap
,concatMap
等-差异here)将一个可观察对象映射到另一个可观察对象。尝试以下
verifyinteraction(action): Observable<any>{
return this.recaptchaV3Service.execute(action).pipe(
switchMap((token :any) =>
this.http.post(
'http://127.0.0.1:8000/verify/recaptcha',token
);
)
);
}
现在,订阅调用this.verifyinteraction(action).subscribe(...)
首先将触发this.recaptchaV3Service.execute(action)
函数,并使用其中的令牌来触发this.http.post()
调用。
但是看到您正在使用身份验证,建议您使用Angular HttpInterceptor来缓存令牌并将令牌添加到HTTP请求中,而不是手动将令牌添加到每个请求中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。