代码之家  ›  专栏  ›  技术社区  ›  d4rty

从RXJS 5迁移到6-可观测间隔

  •  2
  • d4rty  · 技术社区  · 6 年前

    我从RXJS 5.x更新到RXJS 6.2.2,在解决迁移错误时遇到了问题。

    RXJS6中是否没有更多的间隔观测?我在下面的角度分量中使用了间隔观测

    import {Component, OnInit} from '@angular/core';
    import {IntervalObservable} from 'rxjs/observable/IntervalObservable';
    
    @Component({
      selector: 'app-date-time-display',
      templateUrl: './date-time-display.component.html',
      styleUrls: ['./date-time-display.component.css']
    })
    export class DateTimeDisplayComponent implements OnInit {
    
      constructor() {
      }
    
      today = Date.now();
    
      ngOnInit() {
        IntervalObservable.create(1000)
        // .takeWhile(() => this.alive) // only fires when component is alive
          .subscribe(() => {
            this.today = Date.now();
          });
      }
    }
    

    当我运行“ng serve”或“ng build”时,会出现以下错误:

    Module not found: Error: Can't resolve 'rxjs/observable/IntervalObservable' in 'C:\Users\Daniel\Documents\IMA\Porsche_lack\git\webapp\porsche-lack-tracking\src\app\date-time-display'
    i ï½¢wdmï½£: Failed to compile.
    ERROR in node_modules/rxjs/observable/IntervalObservable.d.ts(1,15): error TS2307: Cannot find module 'rxjs-compat/observable/IntervalObservable'.
    

    仅供参考:我运行了命令 rxjs-tslint auto update rules 以前也没有发现任何迁移问题!

    2 回复  |  直到 6 年前
        1
  •  3
  •   BJT    6 年前
    import { interval } from 'rxjs';
    import { takeWhile } from 'rxjs/operators';
    
    ngOnInit() {
        interval(1000).pipe(
           takeWhile(() => this.alive)
        .subscribe(() => {
            this.today = Date.now();
        });
    

    rxjs 6 interval

        2
  •  1
  •   ppgowda4    6 年前

    你可以这样做:

    import { Observable } from 'rxjs';
    
    Observable.interval(1000).subscribe(() =>
      // code goes here
    );
    
        3
  •  0
  •   Ian Poston Framer    5 年前

    从角度8开始,可以使用rxjs间隔。

      import { interval, Observable } from 'rxjs';
    
      ngOnInit() {
        const TEN_MINUTES = 600000;
    
        interval(TEN_MINUTES).subscribe(() => {
          this.refreshSession();
        });
      }