RXJS:类型错误:this._subscribe 不是函数

2024-02-02

我正在将 ionic 3.8 应用程序迁移到 3.9.2。 此迁移包括对 RXJS 5.5 的更新

我现在遇到这个错误:

TypeError: this._subscribe is not a function. (In 'this._subscribe(sink)', 'this._subscribe' is an instance of t)

经过几个小时的调试,我发现此代码部分与错误相关:

protected observeConnectionState() {

    // rxjs/observable/of
    of(new Event('disconnect'))
        .pipe(
            // rxjs/operators/merge
            merge(connect$),
            merge(disconnect$),

            // Map eventname to string (rxjs/operators/map)
            map((e: IEvent) => {
                return e.eventName == 'connect' ? 'connected' : 'disconnected';
            })
        )
        // Apply to class context
        .subscribe((newConnectionState) => {
            // this.connectionState$ is a BehaviorSubject
            this.connectionState$.next(newConnectionState);
        });
}

附加信息

  • RXJS 代码中有两个地方,我可以找到this._subscribe: Observable.ts 第 203 行 https://github.com/ReactiveX/rxjs/blob/ad143f15bfe4d2780448f3841d09ccf3db087122/src/Observable.ts#L218 and Observable.ts 第 208 行 https://github.com/ReactiveX/rxjs/blob/ad143f15bfe4d2780448f3841d09ccf3db087122/src/Observable.ts#L218.

嗯,我发现了问题。而且它与科尔多瓦无关。

对于遇到此问题的其他人: 忘记堆栈跟踪——它没有用。就我而言,在订阅者中this.connectionState$我尝试根据 Promise 创建一个 Observable。但我做错了。

这就是错误所在:

import { Observable } from 'rxjs/Observable';
//...
const myObservable$ = Observable.create(myPromise);

应该这样做:

import { fromPromise } from 'rxjs/observable/fromPromise';
// ...
const myObservable$ = fromPromise(myPromise);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RXJS:类型错误:this._subscribe 不是函数 的相关文章

随机推荐