Functional programming RxJS-跳过以订阅

Functional programming RxJS-跳过以订阅,functional-programming,reactive-programming,rxjs,Functional Programming,Reactive Programming,Rxjs,我想知道是否有一种方法可以使一个可观察对象跳到subscribe操作符(而不终止)。我的用例是,我有一个“loginClicked”可观察对象(一个主题),在这里我执行一个API调用,然后订阅下一个事件。API调用是使用承诺执行的,如果遇到任何错误,我都会使用 Promise.resolve(error) 这样可观察对象就不会终止(允许他们使用相同的可观察对象(subject)再次尝试登录) 然而,在调用API之前,我想使用 doOnNext() 检查internet连接。如果存在连接,则按

我想知道是否有一种方法可以使一个可观察对象跳到subscribe操作符(而不终止)。我的用例是,我有一个“loginClicked”可观察对象(一个主题),在这里我执行一个API调用,然后订阅下一个事件。API调用是使用承诺执行的,如果遇到任何错误,我都会使用

Promise.resolve(error)
这样可观察对象就不会终止(允许他们使用相同的可观察对象(subject)再次尝试登录)

然而,在调用API之前,我想使用

doOnNext()
检查internet连接。如果存在连接,则按正常方式继续。但是,如果没有任何问题,我想立即直接转到subscribe的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
        }
    });

您能添加一个更完整的代码示例吗?我不清楚你到底想做什么。我已经更新了OP,希望能有所帮助。