я определил следующие функции:Ионный 2: как получить ошибку из созданного Observable?
searchProducts(searchText: string){
return Observable.create(observer => {
return this._http.get(this._global.baseUrl + "/products/search/searchProducts?search=" + searchText)
.map(res => res.json())
.subscribe(data => {
observer.next(data);
observer.complete();
},
err => {
return Observable.throw(err); // this statement is called
});
});
}
здесь вызывающий оператор:
this.productService.searchProducts(this.searchItem)
.subscribe(products => {
console.log(products);
},
err => {
console.log(err); // this statement is not getting called
});
Проблема: При получении товаров от сервера, подписываться обратного вызова данных называется, но при получении ошибки (скажем, для тайм-аута сетевого соединения или сетевой ошибки), вызов err call не вызван.
Я полностью измучен попытками найти решение, может ли кто-нибудь помочь?
Спасибо ... Я уже реализовали эту вещь, и она работает, но мне интересно знать почему вложенные наблюдаемые не работают. Я потратил целый день на то, чтобы найти проблему. –
, потому что ваша ошибка возникает перед подпиской. Попробуйте бросить свою ошибку за пределами метода подписки: .map(). Catch(). Subscribe() –
удалил лишнюю фигурную скобку (опечатку), у меня была .subscribe() с 2 аргументами –