Angular8/typescript - 有没有更好的方法在 .then() 中 return Promise<void> 而不是空对象块
Angular8/typescript - Is there a better way to return Promise<void> within .then() instead of an empty object block
我正在尝试查看 return 在 .then() 中插入空块是否是 return 使用 Promise 时的正确模式。
下面是方法以及如何在 .then() 中输入 return 代码。此代码有效,但想知道更好的方法。甚至 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 return 由 delete 方法以及此函数 HttpUtil.someXPolicyForRetry 编辑。使用 toPromise() 转换为 promise 后,我如何 return Promise ?
用上面的空块调用 .then() 是正确的使用模式还是有其他更好的方法?我也看到 .then(() => null) 作为另一个选项,但不确定我们是否有任何其他更好的方法 returning Promise。
请注意,我想在代码片段方法中保持相同的模式,例如 return this._myHttpClient.delete(..),我不想将其更改为其他 return 新模式Promise(resolve, reject) 或调用 resolve().
异步函数总是return一个承诺,即使你没有return一个明确的承诺。
那么在你的代码中,只要你不return任何东西,它总是被期望为Promise<void>
private async somexMethod(id: string, params?: someParams): Promise<void> {
const url: string = "http://someendpointUri";
const headers = await getMyHeadersAsync(id);
this._myHttpClient.delete(url, { headers, params: someParams }) // removed the return
.pipe(retryWhen(HttpUtil.someXPolicyForRetry))
.toPromise() // this converts Observable<ResponseXyz> to Promise<ResponseXyz>
//.then(() => { }) // no need for this
.catch(() => {
// log error msg
});
}
这里是关于异步等待的 4 分钟阅读:https://medium.com/better-programming/should-i-use-promises-or-async-await-126ab5c98789
我正在尝试查看 return 在 .then() 中插入空块是否是 return 使用 Promise 时的正确模式。
下面是方法以及如何在 .then() 中输入 return 代码。此代码有效,但想知道更好的方法。甚至 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 return 由 delete 方法以及此函数 HttpUtil.someXPolicyForRetry 编辑。使用 toPromise() 转换为 promise 后,我如何 return Promise ?
用上面的空块调用 .then() 是正确的使用模式还是有其他更好的方法?我也看到 .then(() => null) 作为另一个选项,但不确定我们是否有任何其他更好的方法 returning Promise。
请注意,我想在代码片段方法中保持相同的模式,例如 return this._myHttpClient.delete(..),我不想将其更改为其他 return 新模式Promise(resolve, reject) 或调用 resolve().
异步函数总是return一个承诺,即使你没有return一个明确的承诺。
那么在你的代码中,只要你不return任何东西,它总是被期望为Promise<void>
private async somexMethod(id: string, params?: someParams): Promise<void> {
const url: string = "http://someendpointUri";
const headers = await getMyHeadersAsync(id);
this._myHttpClient.delete(url, { headers, params: someParams }) // removed the return
.pipe(retryWhen(HttpUtil.someXPolicyForRetry))
.toPromise() // this converts Observable<ResponseXyz> to Promise<ResponseXyz>
//.then(() => { }) // no need for this
.catch(() => {
// log error msg
});
}
这里是关于异步等待的 4 分钟阅读:https://medium.com/better-programming/should-i-use-promises-or-async-await-126ab5c98789