【问题标题】:Unhandlel promise rejection warning未处理的承诺拒绝警告
【发布时间】:2020-01-01 20:48:43
【问题描述】:

我正在使用 Promise.reject

我收到此警告:未处理的承诺拒绝警告:未发布 1.1 版

我该如何解决这个警告?

感谢您的帮助

public async retrieveVersionFromJira(versionName: string): Promise<ReleaseVersion> {
        const searchVersionsUri = config.jiraApiUri + 'versions';
        const jsonResp = await this.jiraClient.get(searchVersionsUri);
        const version: any = jsonResp.find(version => {
            if (version.name == versionName) {
                if (version.released == true) {
                    return Promise.reject("version " + versionName + " is not released");
                }
            }
        });
        if (!version) {
            return Promise.reject("missing version " + versionName + " on jira");
        }
        return new ReleaseVersion(version.id, version.name, version.released);
    }

【问题讨论】:

  • 调用函数时,如果使用 async/await,则需要使用 try/catch 块;如果直接使用 Promise,则需要使用 .catch() 处理程序。

标签: javascript typescript unhandled


【解决方案1】:

调用函数时,如果使用 async/await,则需要使用 try/catch 块;如果直接使用 Promise,则需要使用 .catch() 处理程序:

try {
  const answr = await retrieveVersionFromJira('1.1');
} catch (error) {
  console.error(error);
}

// alternatively
retrieveVersionFromJira('1.1').catch(console.error);

【讨论】:

    【解决方案2】:

    无论您在何处调用此函数,您的承诺链中都没有.catch,或者在异步上下文中await retrieveVersionFromJira(...) 周围没有try / catch

    也就是说,承诺被拒绝,但没有处理拒绝的代码,您的代码会忽略它并继续。运行时会就此向您发出警告。

    【讨论】:

      猜你喜欢
      • 2018-07-02
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多