create Observable from result

前端 未结 2 1866
滥情空心
滥情空心 2021-02-03 19:48

I am trying Angular2.

I noticed that the http service use Observable object instead of Promise (I don\'t like much that choice.. async

相关标签:
2条回答
  • 2021-02-03 20:10

    The method in TypeScript (or JavaScript for that matter) is called of. Learn rxjs has a nice tutorial as well

    If you are using rxjs6 you get everything from rxjs

    import { Observable, of } from 'rxjs';
    
    public getPlants(): Observable<Plant[]> {
      const mocked: Plant[] = [
        { id: 1, image: 'hello.png' }
      ];
      // returns an Observable that emits one value, mocked; which in this case is an array,
      // and then a complete notification
      // You can easily just add more arguments to emit a list of values instead
      return of(mocked);
    }
    

    In previous version you imported the operator of from a different location

    import { Observable } from 'rxjs/Observable';
    import { of } from 'rxjs/observable/of';
    
    public getPlants(): Observable<Plant[]> {
      const mocked: Plant[] = [
        { id: 1, image: 'hello.png' }
      ];
      return of(mocked);
    }
    

    And before that you imported it as an extension for the Observable class

    import { Observable } from "rxjs/Observable";
    import 'rxjs/add/observable/of';
    
    public getPlants(): Observable<Plants[]> {
        // this can be changed to a member variable of course
        let mocked: Plants[] = [{
            id: 1,
            image: "hello.png"
        }];
        return Observable.of(mocked);
    }
    
    0 讨论(0)
  • 2021-02-03 20:26

    This is my working solution:

    if (this._heroes != null && this._heroes !== undefined) {
        return Observable.create(observer => {
            observer.next(this._heroes);
            observer.complete();
        });
    }
    

    I hope that this is the best solution.

    0 讨论(0)
提交回复
热议问题