【发布时间】:2019-06-10 22:35:09
【问题描述】:
如果我的变量中已经有值,我不想到达端点 (getUserInfo),我编写了如下代码,但是有重复的代码,想看看是否有人有更好的编写方法:
let report;
if (this.userInfo) {
report = {
ReportType: reportType,
ReportID: id,
ReportFormat: format,
ReportName: `${reportType}_${id}`,
Filters: shouldNotParseFilters ? filterContent : [],
ViewFields: columns || [],
OrgName: this.userInfo[0].orgname,
FullName: this.userInfo[0].fullname
} as SavedReport;
if (!shouldNotParseFilters) this.reportFilterService.mapReportFilters(<ReportFilterContext>filterContent, report);
report.Filters.push({ 'maxitems': [-1] });
this.nrcService.downloadReport(report, fileName).subscribe({ error: err => this.nrcService.handleError(err) });
}
else {
this.nrcService.getUserInfo().then(data => {
this.userInfo = data;
report = {
ReportType: reportType,
ReportID: id,
ReportFormat: format,
ReportName: `${reportType}_${id}`,
Filters: shouldNotParseFilters ? filterContent : [],
ViewFields: columns || [],
OrgName: data[0].orgname,
FullName: data[0].fullname
} as SavedReport;
if (!shouldNotParseFilters) this.reportFilterService.mapReportFilters(<ReportFilterContext>filterContent, report);
report.Filters.push({ 'maxitems': [-1] });
this.nrcService.downloadReport(report, fileName).subscribe({ error: err => this.nrcService.handleError(err) });
})
}
【问题讨论】:
-
在 if/else 的主体中,简单地创建一个 promise,然后在条件之后调用 .then,从而消除重复。
-
我只是在学习angular,不明白你的意思,你能解释一下吗?
标签: angular promise es6-promise