Spring 和 Angular:如何在一个条件下一个接一个地进行两次 http 调用
Spring and Angular: How to make two http calls one after another with a condition
我有一个处理文件上传的 Angular 界面,在提交按钮后它会将此文件保存在 MySQL 数据库中。我想在此提交方法中进行另一个调用,但第二个 http 调用需要该实体的 id
持久化(文件),我不知道如何从上传的文件中检索该特定 ID。
这是我的提交方法:
onSubmit() {
const statementFile = new StatementFile();
// *******
// here are some business logic
// *******
// this will send POST request and save it to MySQL.
this.statementFileService.postStatementFile(statementFile).subscribe(
{
next : (response) => {
alert('You have been submitted your statement file, check MySQL');
},
error: (err) => {
alert(`there was a problem: ${err.message}` );
}
}
);
// this is the second http request I want to call but it needs particularly the id of that statementFile uploaded.
this.activitiWorkflowService.createPreccess(statementFile.statementFileId).pipe(takeUntil(this._unsubscribeAll), debounceTime(3000)).subscribe(
(data: any) => data
);
}
这是我的 StatementFile class:
export class StatementFile{
statementFileId: number;
dateReception: Date;
label: string;
}
您可以使用 switchMap 运算符来链接请求。 statementFile.statementFileId 或 response.statementFileId 或来自 postStatementFile 请求的其他内容,您将使用它来调用下一个请求。
this.statementFileService.postStatementFile(statementFile)
.pipe(
switchMap(response => this.activitiWorkflowService.createPreccess(statementFile.statementFileId).pipe(takeUntil(this._unsubscribeAll)))
)
.subscribe({
next : (data: any) => data,
error: (err) => {
alert(`there was a problem: ${err.message}` );
}
}
);
我有一个处理文件上传的 Angular 界面,在提交按钮后它会将此文件保存在 MySQL 数据库中。我想在此提交方法中进行另一个调用,但第二个 http 调用需要该实体的 id
持久化(文件),我不知道如何从上传的文件中检索该特定 ID。
这是我的提交方法:
onSubmit() {
const statementFile = new StatementFile();
// *******
// here are some business logic
// *******
// this will send POST request and save it to MySQL.
this.statementFileService.postStatementFile(statementFile).subscribe(
{
next : (response) => {
alert('You have been submitted your statement file, check MySQL');
},
error: (err) => {
alert(`there was a problem: ${err.message}` );
}
}
);
// this is the second http request I want to call but it needs particularly the id of that statementFile uploaded.
this.activitiWorkflowService.createPreccess(statementFile.statementFileId).pipe(takeUntil(this._unsubscribeAll), debounceTime(3000)).subscribe(
(data: any) => data
);
}
这是我的 StatementFile class:
export class StatementFile{
statementFileId: number;
dateReception: Date;
label: string;
}
您可以使用 switchMap 运算符来链接请求。 statementFile.statementFileId 或 response.statementFileId 或来自 postStatementFile 请求的其他内容,您将使用它来调用下一个请求。
this.statementFileService.postStatementFile(statementFile)
.pipe(
switchMap(response => this.activitiWorkflowService.createPreccess(statementFile.statementFileId).pipe(takeUntil(this._unsubscribeAll)))
)
.subscribe({
next : (data: any) => data,
error: (err) => {
alert(`there was a problem: ${err.message}` );
}
}
);