【问题标题】:Future.wait() - Get the Successful Responses AnywayFuture.wait() - 无论如何获得成功的响应
【发布时间】:2020-03-24 15:50:51
【问题描述】:

我有一个希望得到响应的期货列表,每个未来都应该在 10 秒后失败:

  List<Future<http.Response>> futuresList = new List<Future<http.Response>>();

  for (final blog in blogsList) {
    futuresList.add(http.get(blog.rssURL).timeout(const Duration(seconds: 10)));
  }

  try {
    List<http.Response> responses = await Future.wait(futuresList);
  } catch (e) {
    print("Futures list error: " + e.toString());
  }

我的问题是 wait() 函数的自然行为 - 即使只有一个期货抛出异常,所有其他期货都会丢失并且代码进入 catch 块...

有没有办法获取所有响应并检测哪个响应成功哪个不成功?

【问题讨论】:

    标签: http flutter dart future


    【解决方案1】:

    据我了解,您可以在将 http get 请求添加到您的列表之前检查它的响应,如果响应代码不是 200(这意味着 http get 不成功)将其添加为失败到您的列表中。然后,您可以遍历列表以了解哪些请求成功,哪些不成功

    【讨论】:

    • 你能举个例子吗?
    • 是的,但在我这样做之前,如果我的示例不使用 wait() 函数可以吗?当我第一次阅读您的问题时,我认为我可以执行获取请求,然后将它们添加到列表中。我不想制作一个期货列表,添加它们然后执行它,而是让一个 url 列表一个一个地执行它们,然后将它们的响应添加到响应列表中。这符合您的要求还是我误解了?
    • 这不符合我的要求,因为我的目标是同时提出所有请求并节省宝贵的时间,而不是一个接一个。
    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 2018-12-05
    • 2015-05-07
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多