dart - 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{
...
}
解决方案
我会使用一个队列:
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(...) ...
}
这应该有效。它不会进行并发爬取,因为等待每个操作。如果你想要并发爬行,我建议你更聪明一点。寻找工作池或类似结构,以确保您只有一定数量的操作同时运行。
推荐阅读
- flutter - 使用 loadingBuilder 时 Flutter Image.network 不显示?
- php - 在php中上传之前检查文件格式
- firebase - firebase自定义域名动态链接不起作用
- android - BottomNavigationView + NavigationComponent 没有显示任何片段,并且 BottomNavigationView 单击也不起作用
- java - “java 动态 web 项目”和“Gradle 项目”有什么区别
- python - 如何在 clipspy 中获取事实值并将其存储在 python 变量中
- python - 错误:[Errno 13] Permission denied: './configure' when using pip3 install matplotlib on termux
- javascript - 我想从点击功能复制参数
- c++ - 如何在 OpenGL 中使用 Perlin Noise 生成程序地形?
- javascript - 使用 swiper.js 库做出反应的 CSS 冲突