【问题标题】:Why isn't the onError handler firing in the Http.call() future?为什么 onError 处理程序不会在 Http.call() 未来触发?
【发布时间】:2013-12-29 05:54:57
【问题描述】:

我正在尝试使用 Http 服务发出 Web 请求。请求失败(如预期)并返回 403。我希望 onError 处理程序会执行,但事实并非如此。抛出异常并且从未被捕获。

_http(url: '/widgets/shiny-trinket', method: 'PUT', data: 'some malformed data')
  .then((resp) => successHandler, 
  onError: (resp) {
    // why aren't we getting here?
    displayErrorMessage();
  });

抛出的异常(从控制台):

Failed to load resource: the server responded with a status of 403 (Forbidden)
  http://localhost/widgets/shiny-trinket
Instance of '_XMLHttpRequestProgressEvent'

STACKTRACE:
null

我做错了吗?或者这是一个错误?

更新

以下方法我也试过了,还是不行。

_http(url: '/widgets/shiny-trinket', method: 'PUT', data: 'some malformed data')
  .then((resp) => successHandler) 
  .catchError((e) {
    // why aren't we getting here?
    displayErrorMessage();
  });

【问题讨论】:

  • 前几天我也遇到了同样的问题,但是换了一个手术。 catchError 在那之前的未来是否有效?

标签: dart angular-dart dart-async


【解决方案1】:

我刚刚尝试了问题 How do I get Geolocation API to work in Dartium? 中的示例,它产生了 403 错误,并打印了 catchError 中的错误消息。

window.navigator
  .geolocation.getCurrentPosition()
    ..then((pos) {

      window.alert(pos.toString());
    })
    ..catchError((PositionError error) {
      window.alert("Error code: ${error.code}, Error message: ${error.message}");
    })
    ..whenComplete(() => window.alert("complete"))
    ;

【讨论】:

    【解决方案2】:

    这似乎是一个错误。我已经提交了一个拉取请求here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多