意外未定义,返回可观察的订阅,其中预期目标

问题描述 投票:0回答:1

我无法找到下面的代码,为什么我收到undefined认购,当一个对象已经返回定义unsubscribe方法的问题。忽略map()我只是调用静态fromTimeout直接在这里。

class Observable {
  constructor(subscribe) {
    this._subscribe = subscribe
  }
  // Expose public api method for observers to use...
  subscribe(observer) {
    this._subscribe(observer)
  }

  static fromTimeout(time) {
    return new Observable(function(observer) {
      let handler = function() {
        observer.next("next value")
        observer.complete()
      }
      const timeout = setTimeout(handler, time)

      return {
        unsubscribe: function() {
          clearTimeout(timeout)
        }
      }
    })
  }
  map(projection) {
    const self = this

    return new Observable(function(observer) {
      const subscription = self.subscribe({
        next: function(value) {
          observer.next(projection(value))
        },
        complete: function() {
          observer.complete()
        }
      })

      return subscription
    })
  }
}
const obs1 = Observable.fromTimeout(500)

const subscription = obs1
  // .map(v => v.toUpperCase())
  .subscribe({
    next: function(value) {
      console.log("next: ", value)
    },
    complete: function() {
      console.log("complete called")
    }
  })

setTimeout(function() {
  console.log(subscription) // WHY undefined!?
  subscription.unsubscribe()
}, 1000)
javascript observable
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.