Github user sardell commented on a diff in the pull request: https://github.com/apache/metron/pull/1266#discussion_r234283406 --- Diff: metron-interface/metron-alerts/src/app/service/app-config.service.ts --- @@ -0,0 +1,40 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; + +@Injectable() +export class AppConfigService { + + private appConfig; + + constructor(private http: HttpClient) { } + + loadAppConfig() { --- End diff -- When we convert to a promise, we lose the advantages that come with using Observables, including it being cancelable. This helps to prevent possible memory leaks in the browser. Instead of converting to a promise, I think it would be better to use [rxjs' take operator](https://www.learnrxjs.io/operators/filtering/take.html). For example: ``` loadAppConfig() { return this.http.get('assets/app-config.json').pipe( take(1) ).subscribe(data => { this.appConfig = data; }); } ```
---