将最小持续时间设置为加载条

时间:2018-05-22 07:11:35

标签: angular typescript2.0

我有以下内容:

isLoading$: Rx.BehaviorSubject<boolean> = new Rx.BehaviorSubject(false);

 private getSomething(): void {
 this.isLoading$.next(true);
  this.http._get().subscribe((data) => {

//actions..

        },
            error => { console.log(error); },
            () => {
                 setTimeout(500);
                this.isLoading$.next(false);
            }

        );

}

我希望显示加载栏至少500毫秒才能看到它,因为大多数情况下数据检索速度太快,以至于看不到加载条是不可能的。

3 个答案:

答案 0 :(得分:2)

您需要使用setTimeout来实现此目标 -

setTimeout(() => {
        this.isLoading$.next(false);
        // DO what else needed here
   }, 500);

答案 1 :(得分:0)

setTimeout应该是这样的:

setTimeout(() =>{
  // some code here...
  this.isLoading$.next(false);
}, 500); 

答案 2 :(得分:0)

您可以使用timer并使用combineLatest将其与您的http电话结合使用。这将保证在计时器中设置的最小时间,但如果http呼叫已经占用了最小延迟,则不会再增加任何延迟。

import { timer } from 'rxjs/observable/timer';
import { combineLatest } from 'rxjs/observable/combineLatest';

getSometing() {
    const timerSource = timer(500);
    const httpSource = this.http._get();
    const httpWithMinTimer = combineLatest(timerSource, httpSource, (t, h) => h)

   httpWithMinTimer.subscribe(data => {this.isLoading$.next(false);})
}