我想知道是否有一种方法可以使一个可观察的跳过订阅操作符(而不终止)。我的用例是,我有一个可观察到的'loginClicked‘(一个主题),其中我执行一个API调用,然后订阅下一个事件。API调用是使用承诺和遇到的任何错误执行的,我在
Promise.resolve(error)这样,“可观测性”就不会终止(允许他们使用相同的“可观测”(Subject)再次登录)。
但是,在调用我想要使用的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时,可观察到的可观察性是如何直接传递给订阅方法的。我希望这一点更清楚。
发布于 2015-11-05 00:42:31
您可以在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
}
});https://stackoverflow.com/questions/33511476
复制相似问题