Dart 飞镖太快了

Dart 飞镖太快了,dart,dart-async,Dart,Dart Async,我在试着理解为什么这个代码会打印“支票”两次 导入'dart:io'; 导入“dart:async”; 导入“dart:convert”; 未来ft_获取_数据(){ 文件数据; data=新文件(“data.json”); 返回data.exists()。然后((值){ 如果(!值){ 打印(“数据不存在…\n正在创建文件…”); data.createSync(); 打印(“填充…”); write(“{”索引“{”内容“:“Helllo”}”); 打印(“操作完成”); } })。然后((

我在试着理解为什么这个代码会打印“支票”两次

导入'dart:io';
导入“dart:async”;
导入“dart:convert”;
未来ft_获取_数据(){
文件数据;
data=新文件(“data.json”);
返回data.exists()。然后((值){
如果(!值){
打印(“数据不存在…\n正在创建文件…”);
data.createSync();
打印(“填充…”);
write(“{”索引“{”内容“:“Helllo”}”);
打印(“操作完成”);
}
})。然后(())=>data.readAsString())。然后((内容)=>JSON.decode(内容)
).catchError((e)=>newmap());
}
void main(){
映射参数;
字符串名;
num check=0;
绑定('127.0.0.1',8080)。然后((服务器){
打印(“服务器正在启动…$Server”);
侦听((HttpRequest请求){
request.response.statusCode=HttpStatus.ACCEPTED;
request.response.headers.contentType=新的contentType('text','htm l');
params=request.uri.queryParameters;//http://127.0.0.1:8080/?name=tristan
ft_get_data().然后((数据映射){
名称=数据映射['index']['content'];
打印('check:$check');
if(data_map.isNotEmpty)request.response.write(name);else
request.response.write('Booh');
check++;
}).完成时(请求.响应.关闭);
});
}).catchError((错误){
打印(“错误:$error.”);
});
}

是不是太快了?或者有什么方法可以暂停?谢谢。

我试过你的代码,它会打印出
0


您使用什么客户端访问服务器?

Chrome、Safari和我使用IntelliJ EDI我想这是因为浏览器试图在自动的第二次请求中获取
favicon.ico
文件。您可以打印请求以显示客户端实际请求的内容
print(request.requestedUri)。你说得对!并且被发送。。。太好了,那我怎么能一个接一个地抓住他们?那是两个完全不同的要求,你没什么可做的。您的服务器可能在第一个请求完成之前就开始处理第二个请求,但这通常没有问题(但在调试时可能会有麻烦)。您可以检查
request.requestedUri
是否以
favicon.ico
结尾,只需调用
request.response.close
并返回.I did”(request.uri.path!=“/”)request.response.close();返回;