dart中如何实现队列?

Dav*_*ers 5 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{
   ...
}
Run Code Online (Sandbox Code Playgroud)

lrn*_*lrn 5

我会使用队列:

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(...) ...
}
Run Code Online (Sandbox Code Playgroud)

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