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;
      });
    }
    ```


---

Reply via email to