我想知道是否有办法让observable跳到订阅运算符(没有终止)。我的用例是,我有一个'loginClicked'可观察(主题),我执行API调用,然后订阅下一个事件。使用promises和我遇到的任何错误执行API调用,我将其包装在
中<input type="file" ...
以便observable不会终止(允许他们尝试使用相同的observable(subject)再次登录)。
然而,在我调用API之前,我想使用
Promise.resolve(error)
检查互联网连接。如果有连接则继续正常。但是,如果没有任何内容,我想立即直接进入某些'NoConnectivityError'的订阅传递的onNext回调。
有什么东西可以帮助我解决这个问题,还是我会以错误的方式解决这个问题?
感谢。
更新
例如:
doOnNext()
请注意,当用户未连接到wifi时,observable将直接传递给subscribe方法。我希望这更清楚。
答案 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
}
});