我不认识这些人,但这有什么不对吗?
this.auth.userAvailable(data.email)
.flatMap(res => {
return Observable.if(
function () {
return res.success;
},
Observable.fromPromise(this.auth.localStore('user_info', data)),
Observable.throw(new Error('User exists'))
)
})
.subscribe(res => {
this.navCtrl.push(ServiceProviderBusinessInfoPage);
}, err => {
let error = err.json();
this.alertCtrl.create({
title: 'Error',
message: error.message,
buttons: ['OK']
}).present();
});
即使res.success
每次false
被解雇,{}返回this.auth.localStore('user_info', data)
,
订阅成功通话也没有被解雇
帮我解释这段代码,我是rxjs的新手
答案 0 :(得分:2)
在您的情况下,实际上并不需要Observable.if
,为什么不使用简单的switchMap
:
this.auth.userAvailable(data.email)
.switchMap(res => {
if (res.success) {
return Observable.fromPromise(this.auth.localStore('user_info', data));
} else {
return Observable.throw(new Error('User exists'));
}
})
.subscribe(res => {
this.navCtrl.push(ServiceProviderBusinessInfoPage);
}, err => {
let error = err.json();
this.alertCtrl.create({
title: 'Error',
message: error.message,
buttons: ['OK']
}).present();
});
答案 1 :(得分:0)
这与"env": {
"test": {
"presets": [["env", { "targets": { "node": true } }]]
}
}
的工作方式有关。这是在这里报告的:https://github.com/ReactiveX/rxjs/issues/2768
解决方法放在这里:https://github.com/ReactiveX/rxjs/issues/2768#issuecomment-317877914
因此,以您的示例为例,
if