RxJS - 跳过订阅

时间:2015-11-04 00:07:12

标签: functional-programming reactive-programming rxjs

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

<input type="file" ...

以便observable不会终止(允许他们尝试使用相同的observable(subject)再次登录)。

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

Promise.resolve(error)

检查互联网连接。如果有连接则继续正常。但是,如果没有任何内容,我想立即直接进入某些'NoConnectivityError'的订阅传递的onNext回调。

有什么东西可以帮助我解决这个问题,还是我会以错误的方式解决这个问题?

感谢。

更新

例如:

doOnNext()

请注意,当用户未连接到wifi时,observable将直接传递给subscribe方法。我希望这更清楚。

1 个答案:

答案 0 :(得分:1)

您可以在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
        }
    });