2016-12-17 3 views
1

私はAngularJS 2アプリケーションを持っています。開始時と終了時にhttp呼び出しを実行して変数を設定したいとします。問題は、同じ呼び出しのために別の場所でこれを行う必要があることです。複数の場所でhttpコールの開始時と終了時に変数を設定します。

constructor(
    private http: Http 
) {} 

fetch() { 
    return this.http 
    .get('assets/data/events.json') 
    .map(response => response.json()); 
} 

load() { 
    let isLoading = true; // set variable at start 
    return this.fetch() // call fetch() 
    .finally(() => isLoading = false); // set variable at end 
} 

reload() { 
    let isReloading = true; // set variable at start 
    return this.load() // call load() 
    .finally(() => isReloading = false); // set variable at end 
} 

this.reload(); // start call 

私は)()(ロードの開始と終了の変数を機能)と(リロードリロードを呼び出すと、同じHTTP呼び出しのため同時に設定する必要があります。どうすればこれを達成できますか?

答えて

0

私はそれをこのように解決:

constructor(
    private http: Http 
) {} 

fetch() { 
    return this.http 
    .get('assets/data/events.json') 
    .map(response => response.json()); 
} 

load() { 
    let share = this 
    .fetch() 
    .share(); 
    let isLoading = true; // set variable at start 
    share 
    .finally(() => isLoading = false) // set variable at end 
    .subscribe(); 
    return share; 
} 

reload() { 
    let isReloading = true; // set variable at start 
    return this.load() // call load() 
    .finally(() => isReloading = false) // set variable at end 
    .subscribe(); 
} 

this.reload(); // start call 
1

これを試してください。

isLoading: Boolean = false; 
    isReloading: Boolean = false; 
    constructor(private http:Http) { 
    } 
    fetch() { 
     return this.http 
     .get('assets/data/events.json') 
     .map(response => response.json()); 
    }  
    load() { 
    this.isLoading = true; // set variable at start 
    this.fetch() // call fetch() 
    .finally(() => this.isLoading = false); // set variable at end 
    }  
    reload() { 
     this.isReloading = true; // set variable at start 
     this.load() // call load() 
    .finally(() => this.isReloading = false); // set variable at end 
    } 
    this.reload(); 
+0

これは動作しません。私が見つけた解決策で回答を投稿します。 –

関連する問題