rxjs 创建可观察超时总是错误

rxjs created observable timeout always errors

好的,所以现在我真的很困惑。执行以下代码

const created = Rx.Observable.create(observer => {
  observer.next(42)
})
const ofd = Rx.Observable.of(42)

const createSub = name => [
  val => console.log(`${name} received ${val}`),
  error => console.log(`${name} threw ${error.constructor.name}`)
]

created
  .timeout(100)
  .subscribe(
    ...createSub('created')
  )

ofd
  .timeout(100)
  .subscribe(
    ...createSub('ofd')
  )

版画

"created received 42"
"ofd received 42"
"created threw TimeoutError"

我完全不明白,为什么 created Observable 发出了一个值但 ofd Observable 却没有??

使用 RxJS 5,jsbin.com 中的 5.0.3 和我的应用程序中的 5.4.3 出现问题。

(注意:主题也会发生这种情况,这促使我创建了这个示例)

Observable.of 在值发出后立即完成流。

Observable.create 保持 observable 打开。这就是 timeout 抛出错误的原因。

替换

const created = Rx.Observable.create(observer => {
  observer.next(42)
})

const created = Rx.Observable.create(observer => {
  observer.next(42);
  observer.complete();
})

而且没有错误了。