【问题标题】:Emit a single value发出单个值
【发布时间】:2016-01-20 07:22:23
【问题描述】:

我想发出一个值。

根据这个post,以下应该是有效的:

var requestStream = Rx.Observable.just('https://api.github.com/users');

但是,这不起作用。 just 未定义。

它被弃用了吗?有什么可以代替的吗?

【问题讨论】:

    标签: javascript angular rxjs


    【解决方案1】:

    很多东西都隐藏在:import 'rxjs/Rx'; 您可以尝试 Observable.of 获取单个值。

    这对我有用 (plunker):

    import {Component} from 'angular2/core';
    import {Observable} from 'rxjs/Observable';
    import 'rxjs/Rx';
    
    @Component({
      selector: 'my-app',
      providers: [],
      template: `
        <div>
          <h2>Hello {{test | async}}</h2>     
        </div>
      `,
      directives: []
    })
    export class App {
        test: Observable<any> = Observable.of("I'm an observable");
        constructor() {
      }
    }
    

    【讨论】:

    • 您可以只导入ofimport 'rxjs/add/observable/of'; 而不是import 'rxjs/Rx'
    • 现在只是一个全局函数of("value")
    【解决方案2】:

    .just(value) 来自 RxJS v4,而 angular2 使用的是 v5。它经过了广泛的重写,并且仍处于测试阶段,因此操作员在 v5 中丢失/更改了名称。

    .of 很好,正如 MarkM 所说。我只是想补充一点,如果您只有一个值或一组值,您也可以使用.from。要重用您接受的答案中的示例,您可以使用类似 (plunkr):

    //our root app component
    import {Component} from 'angular2/core';
    import {Observable} from 'rxjs/Observable';
    import 'rxjs/Rx';
    
    @Component({
      selector: 'my-app',
      providers: [],
      template: `
        <div>
          <h2>Hello {{test | async}}</h2>
    
        </div>
      `,
      directives: []
    })
    export class App {
        test: Observable<any> = Observable.from(["I'm an observable"]);
        constructor() {
      }
    }
    

    【讨论】:

    • 对象数组 'from' 抛出错误:找不到不同的支持对象 '[object Object]' 和 'of' 工作正常
    【解决方案3】:

    使用of函数:

    import {of} from 'rxjs';
    
    var requestStream = of('https://api.github.com/users');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      相关资源
      最近更新 更多