Dart-帮助我理解Dart上的代码是如何工作的
请帮助我理解此代码是如何工作的。为什么会这样 示例中的变量Dart-帮助我理解Dart上的代码是如何工作的,dart,dart-async,Dart,Dart Async,请帮助我理解此代码是如何工作的。为什么会这样 示例中的变量res是Stream 我想从processQueryResult方法返回Future。这段代码正常工作,我得到的结果是正确的 示例1 Future processQueryResult(mysql.Results){ 列表数据=[]; res.toList().then((列出行){ rows.forEach((mysql.Row){ 添加({name:row.name,email:row.email}); }); }); 返回新的未来(
res
是Stream
我想从processQueryResult
方法返回Future
。这段代码正常工作,我得到的结果是正确的
示例1
Future processQueryResult(mysql.Results){
列表数据=[];
res.toList().then((列出行){
rows.forEach((mysql.Row){
添加({name:row.name,email:row.email});
});
});
返回新的未来(){
返回数据;
});
}
结果中的数据
包含所有需要的数据
但是请告诉我,为什么我移动这部分代码
res.toList().then((列出行){
rows.forEach((mysql.Row){
添加({name:row.name,email:row.email});
});
});
到
返回新的未来((){
res.toList().then((列出行){
rows.forEach((mysql.Row){
添加({name:row.name,email:row.email});
});
});
返回数据;
});
最后,代码看起来(示例2):
Future processQueryResult(mysql.Results){
列表数据=[];
返回新的未来(){
res.toList().then((列出行){
rows.forEach((mysql.Row){
添加({name:row.name,email:row.email});
});
});
返回数据;
});
}
结果我得到了一个空列表
对于测试,我使用此功能:
testResult(){
Results res=…//获取结果;
processQueryResult(res).然后((数据){
打印(数据);
})
}
当processQueryResult的代码
如示例1时,我得到正确的数据,但当processQueryResult的代码
如示例2时,我得到空列表
请告诉我,为什么会这样
如果您能提供相应文章或文档的链接,我将非常高兴。返回新未来(){
res.toList()//非常感谢您的帮助!您是stackoverflow上最酷的人!谢谢!很高兴我能帮忙。