rxjs - 在Angular 7中同步发出两个Http请求
问题描述
我是 Angular/RxJS 等的新手。我想按顺序发出两个 HTTP 请求。我假设如果我在第一个 observable 的完整函数中调用 next 方法,它应该按顺序运行,但事实并非如此。
login(): boolean {
let windowsAuthToken: string;
var result = this.http.get(this.authUrl).subscribe(
(response: any) => {
windowsAuthToken = response.token;
},
err => {},
() => {
return this.performWindowsAuthentication(windowsAuthToken);
}
);
return false;
}
performWindowsAuthentication(windowsAuthToken: string): boolean {
if (!!windowsAuthToken) {
const loginRequest = new WindowsLoginRequest(windowsAuthToken);
this.http
.post<WindowsLoginRequest>(this.winLoginUrl, loginRequest)
.subscribe(
(response: any) => {
if (response) {
localStorage.setItem(Constants.jwtToken, response.jwt);
}
},
err => this.logger.logError("Failed to get JWT token", err),
() => {
return true;
}
);
} else {
return false;
}
}
解决方案
你可以使用 switchMap 创建一个 observable
this.http.get(this.authUrl).pipe(
map(response => response.token),
switchMap(token => this.http.post<WindowsLoginRequest>(this.winLoginUrl, new WindowsLoginRequest(token)))
)
推荐阅读
- xamarin - xamarin APK 成功,但它甚至没有打开
- javascript - 如何在打字稿中使用c插件
- excel - 发送带有重复 Word/ID 的自动电子邮件
- python - keras 中每一层的错误
- java - 在 Swing JFrame 仍然存在时退出控制台应用程序
- download - apache - 无法下载带有扩展 ascii 字符的文件
- r - 在 sparklyr 中寻找“for loop”替代方案
- postgresql - PostgreSQL 中复合类型的长度限制
- android - 一个错误 Gson parse a String like "\"abc\"ab"
- java - 在 Java 中从 BigDecimal 转换为 Double 时何时会出现“数据丢失”