Angular 5 - эквивалент $ $ интервала от AngularJS - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь найти эквивалент $interval из AngularJS в Angular 5.

$interval будет повторять вызов функции или блокировать указанное количество раз с промежуточной задержкой. Это то, что я хотел бы сделать, написанное на AngularJS:

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

Сделай абстракцию i , я использую это для другой цели. Как этого добиться в Angular 5? Я уже пытался использовать rxjs / Observable , но, похоже, не могу найти способ включить как задержку, так и прогон несколько раз.

Спасибо.

Ответы [ 4 ]

0 голосов
/ 11 марта 2019

Вы можете обратиться к этому учебнику по вашему запросу. он отлично работает в 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);   });
 });
}
0 голосов
/ 30 апреля 2018

Вы можете использовать статический метод 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.

0 голосов
/ 30 апреля 2018

Вы можете использовать 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);
});
0 голосов
/ 30 апреля 2018

Вы можете использовать интервал от 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 секунду

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...