继this post之后,我有以下
Observable.combineLatest(
this.translate.get("key1"),
this.translate.get(""),
this.translate.get("key3"),
this.translate.get("key4")
)
.subscribe(([result1, result2, result3, result4]) => {
console.log(result1);
console.log(result2);
console.log(result3);
console.log(result4);
},
error => {
console.log(`${error}`);
});
在第2行,我收到错误,但这似乎没有进入上面的error
处理程序。不幸的是,我发现的示例和doco似乎没有包括如何捕获错误(假设上述方法可行)。
有没有人对如何做到这一点有任何想法?
答案 0 :(得分:1)
我觉得this.translate.get("")
正在验证一个论点,而且正在抛出“{1}}。可观察的(即在它甚至创造其可观察的之前)。
您可以使用以下代码验证错误处理:
import "rxjs/add/observable/throw";
Observable.combineLatest(
this.translate.get("key1"),
Observable.throw(new Error("Boom!")),
this.translate.get("key3"),
this.translate.get("key4")
)
.subscribe(
([result1, result2, result3, result4]) => {
console.log(result1);
console.log(result2);
console.log(result3);
console.log(result4);
},
error => {
console.log(`${error}`);
}
);
并且您可以验证this.translate.get("")
是否正在抛出错误'像这样的可观察物:
import "rxjs/add/observable/defer";
Observable.combineLatest(
this.translate.get("key1"),
Observable.defer(() => this.translate.get("")),
this.translate.get("key3"),
this.translate.get("key4")
)
.subscribe(
([result1, result2, result3, result4]) => {
console.log(result1);
console.log(result2);
console.log(result3);
console.log(result4);
},
error => {
console.log(`${error}`);
}
);
如果这是它正在做的事情,我猜它是合理的行为,因为它不太可能是空键有效。错误更多内部'可能会通过observable报告,并且应由您传递给subscribe
的错误回调处理。