我剛開始在我的Ionic 2(Angular 2)項目中使用ng2 translate。我發現,當我需要一次獲得幾個字符串時,代碼變得嵌套並且難以閱讀。我有點想知道爲什麼像這樣(這只是發出一個單一的值)需要使用可觀察,但也許有一個很好的理由。反正...如何將調用鏈接到ng2-Translate,以及一般的rxjs observables?
因此,例如,說我有4個字符串在不同的點在方法
let result1: string;
let result2: string;
let result3: string;
let result4: string;
this.translate.get("key1").subscribe(value1 => {
result1 = value1;
this.translate.get("key2").subscribe(value2 => {
result2 = value2;
// do some other stuff, which may have another observable returned so yet another level of nesting)
this.translate.get("key3").subscribe(value3 => {
result3 = value3;
// do some other stuff
this.translate.get("key4").subscribe(value4 => {
result4 = value4;
}
}
...
現在想象一下,有超過4串讀。另外,當中間存在其他代碼時(例如,我也可以調用Ionic存儲,它也返回一個Observable),代碼變得非常嵌套 - 這是沒有錯誤處理的。
所以,問題是:是否有「更平坦」的方式來做到這一點?是否有任何鏈接(即使類似於Promise「鏈接」),也許包括錯誤處理(即使有某種頂級catch塊)
我已經看到了鏈接的其他例子,但他們似乎做更多與運營商,而不是像上面觀測的很多
以上的偉大工程,但我有捕捉錯誤的問題。已經在新的[post]中打開了這個(http://stackoverflow.com/questions/41755718/how-to-trap-errors-from-chained-rxjs-observables-when-using-combinelatest)。 – peterc