一种可能的解决方法是在 catchError 操作符下处理错误,而不是在 subscribe 操作符下。下面是一个基本示例:
import { HttpClient } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
@Injectable()
export class DataService {
constructor(private http: HttpClient) {}
getData(): Observable {
return this.http.get('http://example.com/api/data')
.pipe(
catchError((err) => {
console.error('An error occurred:', err);
return throwError('Something bad happened; please try again later.');
})
);
}
}
上面的代码定义了一个名为 DataService
的服务,它使用 HttpClient
类来获取数据。在 getData()
方法中,我们使用 pipe()
方法将 catchError()
操作符附加到 get()
操作符。catchError()
操作符将在发生错误时调用,它将错误传递给错误处理器。在本例中,我们只是使用 console.error()
打印错误,然后返回一个包含错误消息的可观察对象。请根据您的需求修改错误处理逻辑。