ฉันกำลังพยายามคิดให้ออกอะไรคือหนทางที่ดีที่สุดที่จะรอสำหรับหลายร้องของและทำบางอย่างตอนที่พวกเขาเสร็จแล้วเก็บไว้ในใจมันทั้งสองร้องขออาหารเที่ยงในเวลาเดียวกันและพวกเขาไม่ควรรอเพื่อกันและกัน
// table filling
public SUB_getActSearch: Subscription;
// table filling 2
public SUB_getDeclarationSearch: Subscription;
public fillTable(): void {
const searchOBJ = {
CreateDateFrom: this.currentDate,
CreateDateTo: this.currentDate,
ActNumber: this.ActNumber == undefined ? '' : this.ActNumber,
vinCode: this.vinCode == undefined ? '' : this.vinCode,
GovNumber: this.GovNumber == undefined ? '' : this.GovNumber,
IsFromDashboard: true
};
const searchOBJ2 = {
ActNumber: this.ActNumber == undefined ? '' : this.ActNumber,
vinCode: this.vinCode == undefined ? '' : this.vinCode,
GovNumber: this.GovNumber == undefined ? '' : this.GovNumber,
};
if ((this.ActNumber && this.ActNumber != undefined && this.ActNumber != null) || (this.vinCode && this.vinCode != undefined && this.vinCode != null) || (this.GovNumber && this.GovNumber != undefined && this.GovNumber != null)) {
this.SUB_getActSearch = this.searchService.getActSearch({ ...searchOBJ2, PageSize: this.pageSize, PageNumber: this.currentPage }).subscribe((res) => {
this.Act_Data = [];
let headerPagin = JSON.parse(res.headers.get('X-Pagination'));
this.elementsLength = headerPagin.totalCount;
this.currentPage = headerPagin.currentPage;
this.pageSize = headerPagin.pageSize;
res.body.map((param) => {
this.Act_Data.push(param);
});
this.ActDataSource = new MatTableDataSource<Element>(this.Act_Data);
// console.log('Your form data : ', this.ActDataSource);
});
} else {
this.SUB_getActSearch = this.searchService.getActSearch({ ...searchOBJ, PageSize: this.pageSize, PageNumber: this.currentPage }).subscribe((res) => {
this.Act_Data = [];
let headerPagin = JSON.parse(res.headers.get('X-Pagination'));
this.elementsLength = headerPagin.totalCount;
this.currentPage = headerPagin.currentPage;
this.pageSize = headerPagin.pageSize;
res.body.map((param) => {
this.Act_Data.push(param);
});
this.ActDataSource = new MatTableDataSource<Element>(this.Act_Data);
// console.log('Your form data : ', this.ActDataSource);
});
}
}
public fillTable2(): void {
const searchOBJ = {
DeclarationCreateDateFrom: this.currentDate.substring(0, 10),
DeclarationCreateDateTo: this.currentDate,
DeclarationNumber: this.ActNumber == undefined ? '' : this.ActNumber,
VinCode: this.vinCode == undefined ? '' : this.vinCode,
TransitNumber: this.GovNumber == undefined ? '' : this.GovNumber,
};
const searchOBJ2 = {
DeclarationNumber: this.ActNumber == undefined ? '' : this.ActNumber,
VinCode: this.vinCode == undefined ? '' : this.vinCode,
TransitNumber: this.GovNumber == undefined ? '' : this.GovNumber,
};
if ((this.ActNumber && this.ActNumber != undefined && this.ActNumber != null) || (this.vinCode && this.vinCode != undefined && this.vinCode != null) || (this.GovNumber && this.GovNumber != undefined && this.GovNumber != null)) {
this.SUB_getDeclarationSearch = this.declarationsService.getDeclarations({ ...searchOBJ, IsFromDashboard: true, PageSize: this.pageSizeDecl, PageNumber: this.currentPageDecl }).subscribe((res) => {
this.Declaration_Data = [];
let headerPaginDecl = JSON.parse(res.headers.get('X-Pagination'));
this.elementsLengthDecl = headerPaginDecl.totalCount;
this.currentPageDecl = headerPaginDecl.currentPage;
this.pageSizeDecl = headerPaginDecl.pageSize;
res.body.map((param) => {
this.Declaration_Data.push(param);
});
this.DeclarationDataSource = new MatTableDataSource<Element>(this.Declaration_Data);
// console.log('Your form data : ', this.DeclarationDataSource);
});
} else {
this.SUB_getDeclarationSearch = this.declarationsService.getDeclarations({ ...searchOBJ, IsFromDashboard: true, PageSize: this.pageSizeDecl, PageNumber: this.currentPageDecl }).subscribe((res) => {
this.Declaration_Data = [];
let headerPaginDecl = JSON.parse(res.headers.get('X-Pagination'));
this.elementsLengthDecl = headerPaginDecl.totalCount;
this.currentPageDecl = headerPaginDecl.currentPage;
this.pageSizeDecl = headerPaginDecl.pageSize;
res.body.map((param) => {
this.Declaration_Data.push(param);
});
this.DeclarationDataSource = new MatTableDataSource<Element>(this.Declaration_Data);
// console.log('Your form data : ', this.DeclarationDataSource);
});
}
}
มีสองวิธีการของมันเรียกว่าอยู่ใน ngoninit:fillTable()และ fillTable2().
ฉันต้องพยายามจะใช้ห้องตามวิธีการที่จะฟัง subscriptions และพวกเขารอพวกเขา
public testingforkJoin(): void {
forkJoin([this.SUB_getActSearch, this.SUB_getDeclarationSearch]
).subscribe(val =>
console.log("xxxxx", val));
// call some method here as soon as both are done
}
แต่ก็อย่างที่มันกลายเป็น forkJoin ไม่สามารถฟัง subscriptions มันมีทางอื่นที่คล้ายกันเพื่อ forkjoin สำหรับ subscriptions?
มีรถลากวิธีการของมันรวมร้องขอ HTTP และฉันต้องการที่จะรอสำหรับทั้งสองเครือข่ายการร้องขอที่จะสมบูรณ์ออกและทำไรสักอย่างเร็วที่พวกเขาเสร็จแล้ว