如何解决Rxjs 使用 concatMap 进行顺序调用
我想按顺序进行两次调用(如果第一个完成,则调用第二个):
我的代码如下:
myApiClient
.firstApiCall()
.pipe(take(1),concatMap (firstResult => {
doSomethingWithResponse(firstResult);
return myApiClient.secondApiCall();
}),take(1))
.subscribe(secondResult => {
doSomethingWithResponse(firstResult);
},error => {
catchSecondApiCallError(error);
});
第一个问题:这是进行顺序调用的正确方法吗? 第二个问题:我怎样才能捕捉到第一个调用的错误?
解决方法
是的,这是使用 rxjs 链接顺序 API 调用的正确方法。对于第二个问题,您可以使用 catchError
运算符。
myApiClient
.firstApiCall()
.pipe(
take(1),catchError(e => {
console.log('Error caught from first api ',e);
return EMPTY;
}),concatMap (firstResult => {
doSomethingWithResponse(firstResult);
return myApiClient.secondApiCall();
}),take(1))
.subscribe(secondResult => {
doSomethingWithResponse(secondResult);
},error => {
catchSecondApiCallError(error);
});
EMPTY 导入自:
import { EMPTY } from 'rxjs';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。