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