codeRun(code: string): void {
if (!this.viewState.source || !this.viewState.source.id) return;
this.toolbarState.loading.run = true;
this.toolbarState.enable.stop = true;
this.viewTableState.loading = true;
const param: ViewTestExecute = {
sourceId: this.viewState.source.id,
scriptType: 'SQL',
size: this.toolbarState.limit.value,
script: code,
variables: [],
columns: [],
countTotal: true
};
this.dataProviderService
.execute(param)
.pipe(
catchError(exception => {
this.toolbarState.loading.run = false;
this.toolbarState.enable.stop = false;
this.viewTableState.loading = false;
throw exception;
})
)
.pipe(takeUntil(this.destroy$))
.subscribe((result: QueryResult) => {
this.viewState.execute = param
this.toolbarState.loading.run = false;
this.toolbarState.enable = {run: true, stop: false, save: true, setting: false, copy: false};
this.viewTableState = {...result, loading: false};
});
}
如上面这段代码,因为页面的标签例如 <spin [spining]='xxxloading'></spin>
这样,有一个加载状态,但是用
this.loading = true
this.http.get().subscribe(xx=>this.loading=false)
这种改变 loading 状态的代码,感觉弄得我代码很不干净,有没有什么方法能尽量让改变页面状态代码精简些,让我的代码干净些
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.