在我看来可能是这样this.translate.get("")
正在验证一个参数并将其抛出可观察值的“外部”(即在它创建其可观察值之前)。
您可以使用如下代码验证错误处理:
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}`);
}
);
如果这就是它正在做的事情,我想这是合理的行为,因为空键不太可能有效。更多“内部”错误可能会通过可观察到的报告,并且应该由您传递给的错误回调来处理subscribe
.