RxJS - 跳过订阅

RxJS - Skip to subscribe

我想知道是否有办法使可观察对象跳到订阅运算符(不终止)。我的用例是,我有一个 'loginClicked' 可观察对象(一个主题),我在其中执行 API 调用,然后订阅下一个事件。 API 调用是使用 promises 执行的,我遇到的任何错误都包含在

Promise.resolve(error)

这样 observable 就不会终止(允许他们尝试使用相同的 observable(主题)再次登录)。

但是在调用 API 之前我想使用

doOnNext()

检查互联网连接。如果有连接,则照常继续。但是,如果什么都没有,我想立即直接进入订阅的onNext回调,传入一些'NoConnectivityError'。

有什么可以帮助我解决这个问题的吗?还是我的方法不对?

谢谢。

更新

例如:

this.loginClickedStream
    .doOnNext(function() {
        if (!connectedToWifi) {
            //Skip to subscribe passing some data somehow
            skipToSubscribe({error: 'NotConnectedToWifi'});
        } 
    })
    .flatMap(function() {
        return fetch(url);
    })
    .subscribe(function(response) {
        if (response.error === 'NotConnectedToWifi') {
         //Show alert
        } else if (response.ok) {
            //Display response in UI
        } else {
            //Show alert showing error
        }
    });

注意当用户没有连接到 wifi 时,observable 是如何直接传递给 subscribe 方法的。我希望这更清楚。

可以在flatMap中实现,如下:

this.loginClickedStream
    .flatMap(function() {
        if (!connectedToWifi) {
            return Rx.Observable.return({error: 'NotConnectedToWifi'});
        } else {
            return fetch(url);
        }
    })
    .subscribe(function(response) {
        if (response.error === 'NotConnectedToWifi') {
         //Show alert
        } else if (response.ok) {
            //Display response in UI
        } else {
            //Show alert showing error
        }
    });