JavaScript Promise 中的可选 catch

ovg*_*ovg 4 javascript promise typescript es6-promise

以下内容有效:

new Promise<void>((resolve, reject) => {
      reject()
    })
    .then(() => {})
    .catch(() => {})
Run Code Online (Sandbox Code Playgroud)

但我可能并不总是关心错误。有没有办法让 catch 成为可选的?

我尝试了这个但没有成功:

new Promise<void>((resolve, reject?) => {
      if (reject) reject()
    })
    .then(() => {})
Run Code Online (Sandbox Code Playgroud)

Error: Uncaught (in promise): undefined

Ber*_*rgi 6

有没有办法让 catch 成为可选的?

不可以。如果您使用的 Promise 可能会出错,则需要对其进行处理(或将其传播给调用者)。

当然,如果您自己创建 Promise,则拒绝它是可选的,并且您可以选择从不拒绝您的 Promise,这样您就不需要处理任何错误。但是,如果您正在使用的 Promise 存在错误,并且您想忽略它们,则必须明确执行此操作。写吧

somePromise.catch(e => void e);
// or             () => { /* ignore */ }
// or             function ignore() {}
Run Code Online (Sandbox Code Playgroud)