如何在飞镖中实现排队?

时间:2019-01-02 12:14:23

标签: dart

我想在Darts中建立功能队列。排队应该是异步的,允许多个功能同时运行。但是,最多应同时执行三个功能。我该如何实现?

我已经束缚了工作清单,但是我在努力限制同时运行功能上的努力

List<String> queue = new List();

main(){
  queue.add("...");
  queue.add("...");
  queue.add("...");

  for(String q in queue){
    await crawl(q);
  }
}

crawl(String) async{
   ...
}

1 个答案:

答案 0 :(得分:0)

我会使用队列:

import "dart:collection";
final queue = Queue<String>();
main() {
  queue
    ..add("...")
    ..add("...")
    ..add("...");
  while (queue.isNotEmpty) {
    await crawl(queue.removeFirst());
  }
}

crawl(String x) async {
  .... queue.add(...) ...
}

这应该有效。因为等待每个操作,它不会进行并发爬网。如果要进行并发爬网,建议您更聪明一些。寻找工作池或类似的结构,以确保您仅同时运行一定数量的操作。