create

签名: create(subscribe: function)

使用给定的订阅函数来创建 observable 。

create - 图1

示例

示例 1: 发出多个值的 observable

( jsBin |
jsFiddle )

  1. import { Observable } from 'rxjs/Observable';
  2. /*
  3. 创建在订阅函数中发出 'Hello' 和 'World' 的 observable 。
  4. */
  5. const hello = Observable.create(function(observer) {
  6. observer.next('Hello');
  7. observer.next('World');
  8. });
  9. // 输出: 'Hello'...'World'
  10. const subscribe = hello.subscribe(val => console.log(val));
示例 2: 基于定时器发出偶数的 observable

( jsBin |
jsFiddle )

  1. import { Observable } from 'rxjs/Observable';
  2. /*
  3. 每秒自增值并且只发出偶数
  4. */
  5. const evenNumbers = Observable.create(function(observer) {
  6. let value = 0;
  7. const interval = setInterval(() => {
  8. if (value % 2 === 0) {
  9. observer.next(value);
  10. }
  11. value++;
  12. }, 1000);
  13. return () => clearInterval(interval);
  14. });
  15. // 输出: 0...2...4...6...8
  16. const subscribe = evenNumbers.subscribe(val => console.log(val));
  17. // 10秒后取消订阅
  18. setTimeout(() => {
  19. subscribe.unsubscribe();
  20. }, 10000);

其他资源


:file_folder: 源码: https://github.com/ReactiveX/rxjs/blob/master/src/internal/observable/GenerateObservable.ts