关键值未来任务的队列

问题描述 投票:0回答:1

我想创建一个未来任务的队列,其中包含一个键,以避免将已添加的同一任务添加到队列中。

这是我的情景:

  • 异步调用url1
  • 异步调用url1
  • 异步调用url2

我需要的是:

  • 将对url1的调用添加到队列并执行它
  • 不要将对url1的第二次调用添加到队列中并丢弃它
  • 将对url2的调用添加到队列中,等待对url1的调用完成,然后执行它

我读到了关于StreamQueue和Queue的内容,但我不知道它是否符合我的需求。

我读到的另一个结构是带有流的await for

所以我尝试了类似的东西:

await for (var url in stream) { // <--- I do not know how create this stream
  var url = Uri.https('www.example.com', url);

  List<dynamic> tmpItems;

  try {
    http.Response res = await http.get(url);
    final data = json.decode(res.body);
    tmpItems = _parseItems(data["data"]);
  } catch(e) {
    print(e);
  }

  if (this.mounted) {
    return setState(() {
      _items.addAll(tmpItems ?? []);
    });
  }
}

我不知道如何创建qazxsw poi并添加调用它。

asynchronous dart flutter queue
1个回答
0
投票

好的,首先你需要有一个urlArray,其中有url然后实现一个名为getUrl的异步方法作为示例并实现它以从url获取数据此方法将url作为参数

stream

所以第一次调用就像getData(urlArray [0],0)

© www.soinside.com 2019 - 2024. All rights reserved.