你知道我的問題的解決方案嗎? 我需要一個觀察的包膠喜歡這裏訂閱的靈活的序列: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
在保存數據方法,而不是分配值的成功變量返回結果 –