我有以下代码:
this.somePromiseFn<T> // this fn is actually a promise
.then(res => res as T)
.catch(err => this.handleError<T>(err));
handleError<T>(err: HttpErrorResponse) {
// do something here
// and return like
return {} as T;
}
上面的代码工作正常。但是如何不使用其他回调函数而将err
参数直接传递给handleError
方法。默认情况下,由于catch
将err
传递给回调函数,因此它也应将err
传递给handleCatchError
。我想要类似的东西:
this.somePromiseFn<T>
.then(res => res as T)
.catch(this.handleCatchError<T>); // this line gives error 'An argument for 'err' was not provided'
但是上面的代码会产生错误:
期望1个参数,但得到0。
没有提供“ err”的参数。
尽管我已经访问了以下问题:
但是上面的问题还建议使用另一个回调函数。
答案 0 :(得分:1)
this.somePromiseFn<T>
.then(res => res as T)
.catch(this.handleCatchError<T>);
这应该可以工作,试图重现该错误,但是可以正常工作see a demo,可能是我丢失了一些东西,必要时进行检查和更新。
答案 1 :(得分:1)
根据您提供的stackblitz,请参见
this.someFn().then(r => console.log(r)).catch(err => this.cb<any>(err));
答案 2 :(得分:0)
不提供生成的类型并绑定“ this”:
this.somePromiseFn<T>
.then(res => res as T)
.catch(this.handleCatchError.bind(this));