Angular 5 - 相当于AngularJS的$ interval

问题描述 投票:3回答:4

我试图从AngularJS找到相当于$interval到Angular 5。

$interval将重复一个函数调用或一个指定次数的块,中间有一个延迟。这是我想要做的,用AngularJS编写:

$interval(function() {
      myFunction(param1, param2)
      i++;
    }, delay, count);

对i进行抽象,我将其用于不同的目的。如何在Angular 5中实现这一目标?我已经尝试过使用rxjs / Observable,但我似乎无法找到一种方法来同时包含延迟和运行多次。

谢谢。

angular rxjs observable delay repeat
4个回答
10
投票

您可以使用timer静态方法和take运算符。

import (timer} from 'rxjs';
import {take} from 'rxjs/operators';  

timer(yourDelay, 1000).pipe(
   take(yourCount)).subscribe(x=>{
    // do here whatever you want to do
    })

我假设你使用RxJS 6。


4
投票

你可以使用intervaltake来控制你想要调用你的函数的次数。

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/interval';

const delay = 1000; // every 1 sec
const count = 5; // process it 5 times

Observable.interval(delay).take(count).subscribe(() => {
  myFunction(param1, param2);
});

2
投票

您可以使用rxjs的间隔

import { interval } from 'rxjs/observable/interval';

//emit value in sequence every 1 second
const source = interval(1000);
//output: 0,1,2,3,4,5....
const subscribe = source.subscribe(val => console.log(val));

这将在每1秒后发出新值


1
投票

您可以参考this教程查询。它在Angular 5中的工作也很好..我试过它,这里给出了简单的方法。

import { Observable } from “rxjs”;

import { IntervalObservable } from “rxjs/observable/IntervalObservable”;

import { TimerObservable } from “rxjs/observable/TimerObservable”;

import “rxjs/add/operator/takeWhile”;

Declare variable in class
export class MyComponent implements OnInit { 

private alive: boolean; 

}

In ngOnInit() function use below code to call service after particular interval of time
ngOnInit() {

IntervalObservable.create(10000)  .takeWhile(() => this.alive) 
// only fires when component is alive  

.subscribe(() => { this.yourService.getDataList()   
.subscribe(data => { this.agentData = data.json().result; console.log(this.agentData);   });
 });
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.