Angular 5 - 相当于 AngularJS 的 $interval
Angular 5 - equivalent to $interval from AngularJS
我正在尝试从 AngularJS 中找到 $interval
到 Angular 5.
的等价物
$interval
将重复函数调用或块指定的次数,中间有延迟。
这是我想做的,写在 AngularJS:
$interval(function() {
myFunction(param1, param2)
i++;
}, delay, count);
对 i 进行抽象,我将其用于不同的目的。
如何在 Angular 5 中实现这一点?
我已经尝试使用 rxjs/Observable 但我似乎无法找到一种方法来同时包含延迟和 运行 多次部分。
谢谢。
您可以使用 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 秒后发出新值
您可以使用 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 here
})
我假设你使用的是 RxJS 6。
您可以使用 interval
和 take
来控制调用函数的次数。
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);
});
您的查询可以参考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); });
});
}
我正在尝试从 AngularJS 中找到 $interval
到 Angular 5.
$interval
将重复函数调用或块指定的次数,中间有延迟。
这是我想做的,写在 AngularJS:
$interval(function() {
myFunction(param1, param2)
i++;
}, delay, count);
对 i 进行抽象,我将其用于不同的目的。 如何在 Angular 5 中实现这一点? 我已经尝试使用 rxjs/Observable 但我似乎无法找到一种方法来同时包含延迟和 运行 多次部分。
谢谢。
您可以使用 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 秒后发出新值
您可以使用 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 here
})
我假设你使用的是 RxJS 6。
您可以使用 interval
和 take
来控制调用函数的次数。
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);
});
您的查询可以参考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); });
});
}