【问题标题】:Possibly unhandled rejection: {}可能未处理的拒绝:{}
【发布时间】:2018-08-13 22:36:18
【问题描述】:

我得到了错误:

可能未处理的拒绝:{}

我阅读了本主题的解决方案:Angular 1.6.0: "Possibly unhandled rejection" error

我试过但我不知道我把固定代码放在哪里,请帮助我,谢谢 谢谢大家!

【问题讨论】:

  • 您可以将其放在 .config 块中的任何位置(即您定义路线的位置)。这看起来像是一个真正问题的创可贴,你最好找出实际问题并解决它。
  • 当然这不是一个真正的解决方案,因为 Angular 1.5.9 的人们因为未处理的拒绝而遇到这个问题。我建议您首先检查您的 angular-ui-router 版本,检查您是否使用的是最新版本(1.0.20)。如果您已经在使用它,请检查您是否有任何没有错误处理函数的承诺或您有承诺的 catch 案例。希望这能解决您的问题。不要用$qProvider 隐藏您的问题。

标签: angularjs angular-ui-router


【解决方案1】:

第一个选项是通过在 $qProvider 配置中使用 errorOnUnhandledRejections 禁用它们来隐藏错误:

app.config(['$qProvider', function ($qProvider) {
    $qProvider.errorOnUnhandledRejections(false);
}]);

但是这只会关闭日志记录。错误本身将保留

更好的解决方案在这种情况下将是 - 使用 .catch() 方法处理拒绝:

service.doSomething()
 .then(function (response) {
   //normal processing
})
 .catch(function (err) {
     console.log(err);
     throw err;
});

有用的链接:

【讨论】:

  • 刚刚花了半年时间升级到v1.7的几万行应用程序维护,这并不是一个更好的解决方案。回过头来为每个 $timeout 添加 noop 代码来解决 $scope.$apply 的不足之处实际上完全是浪费时间,因为有人认为他们正在杀死的框架的最后一个版本是正确的是时候告诉人们如何做承诺了(无论如何,他们在 Angular2 中取代了承诺)。
  • 如果我不知道哪个承诺失败了怎么办?究竟什么是承诺?我没有在我的代码(不要使用 $http)、服务等中做出任何隐含的承诺。我使用 ui-router,所以也许这会增加一个承诺?或者只是有一个控制器?我不知道那些在幕后做了什么,所以有赏金an open question 要求提供一种通用的方法来调试这个问题。
猜你喜欢
  • 1970-01-01
  • 2016-11-24
  • 2017-11-02
  • 2017-05-07
  • 2018-02-27
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 2023-01-04
相关资源
最近更新 更多