angular - Angular 8 - 按顺序调用可观察对象
问题描述
我正在尝试一个接一个地调用几个可观察对象。这是我的代码:
// service1
login(username: string, password: string): any {
this.service2.firstObservable(username, password)
.pipe(map(
data => {
if (data) {
return this.service2.secondObservable(data, username, password)
.subscribe(token => {
return true;
});
}
},
error => {
this.service.error(error);
return false;
}
));
}
执行:
this.service1.login(this.f.username.value, this.f.password.value)
.pipe(map(
data => {
// Login is successful
}
));
我得到:
Cannot read property 'pipe' of undefined
显然 service1.login 返回一个错误的值。是否有可能使某些东西起作用?
谢谢
更新 1。
login(username: string, password: string): any {
return this.service1.firstObservable(username, password)
.pipe(switchMap(
data => this.service1.secondObservable(data, username, password)
));
}
解决方案
你可以试试 switchMap 来切换 observables,记得在 service1 中返回值:
login(username: string, password: string): any {
return this.service2.firstObservable(username, password)
.pipe(
switchMap(
data => this.service2.secondObservable(data, username, password)
),
catchError(
error => {
this.service.error(error);
return throw(error); // In case you want to catch it later
}
)
);
}
之后,第二段代码应该可以工作。
推荐阅读
- bash - 如何防止 nix-copy-closure 在 CI 上提示输入密码
- c# - 如何在 Asp.net CORE MVC 中的浏览器上下载 PDF 文件
- junit - Mokito 单元测试 NoSuchMethodError:org.json.JSONObject.keySet()?
- python - RTSP 相机在检测到面部 5 秒后崩溃?
- c# - 使用充满动态资源的大画布进行本地化时的 WPF 性能问题
- javascript - 在(自定义)枚举容器中注入函数
- kubernetes - 运行 KubernetesPodOperator
- wordpress - 当 wp-login 和 wp-admin 受 htaccess 限制时,在 Wordpress 上的登录尝试
- android - 如何检查特定应用程序是否已安装在 android 或 iphone 设备上?
- javascript - 在 JS 中的 AJAX POST 方法调用中出现错误“非法调用”