【发布时间】:2020-05-15 00:02:57
【问题描述】:
我试图查看在 .then() 中返回一个空块是否是返回 Promise 时的正确模式。
下面是方法以及我如何在 .then() 中返回代码。此代码有效,但想知道更好的方法。甚至 tslint 也对此表示赞同。
private async somexMethod(id: string, params?: someParams): Promise<void> {
const url: string = "http://someendpointUri";
const headers = await getMyHeadersAsync(id);
// Here calling my API that returns the promise
return this._myHttpClient.delete(url, { headers, params: someParams })
.pipe(retryWhen(HttpUtil.someXPolicyForRetry))
.toPromise() // this converts Observable<ResponseXyz> to Promise<ResponseXyz>
// tslint:disable-next-line: no-empty
.then(() => { }) // Is this the correct way to return for Promise<void> or .then(() => null) ?
.catch(() => {
// log error msg
});
}
这里 Observable 是由 delete 方法以及这个函数 HttpUtil.someXPolicyForRetry 返回的。使用 toPromise() 转换为 Promise 后,如何返回 Promise ?
如上用空块调用 .then() 是正确的使用模式还是有其他更好的方法?我还看到 .then(() => null) 作为另一个选项,但不确定我们是否有任何其他更好的方式来返回 Promise。
请注意,我想在 coden-p 方法中保持相同的模式,例如 return this._myHttpClient.delete(..) 并且我不想将其更改为其他一些 return new Promise(resolve, reject) 或调用解决()。
【问题讨论】:
标签: typescript angular8