如何创建在0.75秒后解析的RxJS Observable?

时间:2017-12-08 16:49:15

标签: typescript rxjs rxjs5

我想创建一个在0.75秒后解析的Observable。我尝试这样做,但Observable立即解决:

import { Observable } from 'rxjs/Observable';
import { delay } from 'rxjs/operators/delay';
...
refresh(): Observable<any> {
  // Return an observable that resolves after .75 seconds
  return Observable.create().pipe( delay(750) );
}

我正在使用rxjs版本5.5.2和typescript版本2.4.2

1 个答案:

答案 0 :(得分:1)

如果您希望计时器作为源,那么您可以执行以下操作:

console.log('start');
Rx.Observable.timer(750)
  .subscribe(
    x => console.log('next:', x),
    null,
    () => console.log('complete')
  );
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.2/Rx.min.js"></script>

以下是文档:http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-timer

你必须实际将一些东西传递给create方法btw。如果你不这样做,我认为它会引发以下错误:Cannot read property 'subscribe' of undefined

如果你想推迟返回一些observable,那么你可以这样做:

console.log('start');
Rx.Observable.create(o => { o.next('test'); o.complete(); })
  .delay(750)
  .subscribe(
    x => console.log('next:', x),
    null,
    () => console.log('complete')
  );
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.2/Rx.min.js"></script>

抱歉,我使用旧式语法,因为我无法获取操作员在编辑器中的导入。