약속을 사용하고
Argument of type '(err: any) => void' is not assignable to parameter of type '(err: any, caught: Observable) => ObservableInput<{}>'. Type 'void' is not assignable to type 'ObservableInput<{}>'.
HTTP와 같은 더 잘 맞는 관찰 가능한보다는 결과, 그래서 당신이 약속의 길을 갈 것이 좋습니다 :
private _getSchema(fileName): any {
return new Promise((resolve, reject) => {
this.http.get(fileName)
.map(this._extractData)
.catch(err => reject(err))
.subscribe(schema => resolve(schema));
});
};
오류가 있습니다 :
private _getSchema(fileName): any {
return this.http.get(fileName).toPromise().then(x => this._extractData(x));
};
Observable.prototype.catch
이 다른 서명을 가지고 있기 때문에 시도한 방식이 작동하지 않습니다 (계속 진행하려면 새로운 관찰 가능 정보를 제공해야합니다).
private _getSchema(fileName): any {
return new Promise((resolve, reject) => {
this.http.get(fileName)
.map(this._extractData)
.subscribe(resolve, reject);
});
};
을하지만이 observable.toPromise()
이 바로 이러한 작업을 수행하는 것입니다 :의 OnError 구독하면 검색 한 것입니다.
그냥'.catch (거부)'작업을 수행합니까? – dandavis