[英]Why a promise reject is not catched within a try catch block but produces an Uncaught error?
[英]Reject a promise within an http.get catch block
我有這個異步函數,在promise中使用http.get。
private _getSchema(fileName): any {
return new Promise((resolve, reject) => {
this.http.get(fileName)
.map(this._extractData)
.catch(this._handleError)
.subscribe(schema => resolve(schema));
});
};
與其在catch塊中調用this._handleError,不如拒絕我的諾言,並通過拒絕錯誤對象。 我怎么做?
嘗試:
private _getSchema(fileName): any {
return new Promise((resolve, reject) => {
this.http.get(fileName)
.map(this._extractData)
.catch(err => reject(err))
.subscribe(schema => resolve(schema));
});
};
給出錯誤:
類型'(err:any)=> void'的參數不能分配給類型'(err:any,catch:Observable)=> ObservableInput <{}>'的參數。 無法將類型“ void”分配給類型“ ObservableInput <{}>”。
我正在使用打字稿
承諾比http更好地適合可觀察的結果,因此我建議您采用承諾的方式:
private _getSchema(fileName): any {
return this.http.get(fileName).toPromise().then(x => this._extractData(x));
};
您嘗試的方法不起作用,因為Observable.prototype.catch
具有不同的簽名(它需要提供一個新的observable才能繼續)。 訂閱onError是您要搜索的內容:
private _getSchema(fileName): any {
return new Promise((resolve, reject) => {
this.http.get(fileName)
.map(this._extractData)
.subscribe(resolve, reject);
});
};
但這正是observable.toPromise()
所做的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.