你知道我的问题的解决方案吗? 我需要一个观察的包胶喜欢这里订阅的灵活的序列:Angular2与一些顺序订阅的自定义observables
saveData() {
return new Observable((observer) => {
let success = true;
if(example === true) {
this.saveCallbarrings().subscribe((response) => {
// this response was ignored from angular
success = (response === true);
});
}
if(example2 === true) {
this.saveCallbarrings().subscribe((response) => {
// this response was ignored from angular too
success = (response === true);
});
}
// and so on ... in the end I need a result of all responses
observer.next(success);
});
}
最后,我称之为“响应收集”的结果,在我提交方法:
onSubmit() {
// Validations and others
...
if(this.isNew) {
observable = this.create();
} else {
observable = this.update();
}
return observable.subscribe(success => {
if(success == true) {
let subscription = this.saveData().subscribe(successFinished => {
// And here is the problem, because this var doesnt have the correct response
if(successFinished === true) {
this.alertService.success('ALERT.success_saved', {value: 'ALERT.success_edit_user', param: {user: this.user.username}});
}
});
subscription.unsubscribe();
}
});
主要问题在于角度不会等待“成功”var订阅到第一个代码块中。 为什么和我的更好的解决方案是什么?
您不能等待Observable或Promise来完成。您只能订阅它才能在完成或发出活动时收到通知。你可以请添加saveExtendedData服务方法,因为我觉得你可以在那里做出改变? –
对不起,我在第二个代码块中有一个错误。 “this.saveExtendedData()”方法应该是“this.saveData()”。 – Joeker
在保存数据方法,而不是分配值的成功变量返回结果 –