Dart 如何从HttpRequest获取值?
我在学飞镖,遇到了一个障碍。我非常想从json字符串处理函数返回一个值,以便在main()中使用该值。(我正在尝试设置一些顶级变量,以便与html模板的单向数据绑定一起使用。)我正在使用Dart 如何从HttpRequest获取值?,dart,Dart,我在学飞镖,遇到了一个障碍。我非常想从json字符串处理函数返回一个值,以便在main()中使用该值。(我正在尝试设置一些顶级变量,以便与html模板的单向数据绑定一起使用。)我正在使用HttpRequest.getString和调用启动处理。但是HttpRequest不喜欢被分配给变量,所以我不知道如何从中获取任何信息 processString(字符串jsonString){ //创建相关数据的地图 返回myMap; } void main(){ getString(url).then(pr
HttpRequest.getString
和调用启动处理。但是HttpRequest不喜欢被分配给变量,所以我不知道如何从中获取任何信息
processString(字符串jsonString){
//创建相关数据的地图
返回myMap;
}
void main(){
getString(url).then(processString);
//对处理后的结果做点什么!
}
我想我的问题是如何从HttpRequest调用的函数中获取值?您正在尝试执行Dart异步模型不支持的操作。您必须处理异步请求的结果:
在processString()
中
在从processString()
调用的另一个函数中
在传递给then()
的匿名函数中李>
或者类似的东西。您不能在main()
中从较低的位置访问它:
processString(字符串jsonString){
//创建相关数据的地图
//对处理后的结果做点什么!
}
void main(){
getString(url).then(processString);
//这里的任何代码都无法访问HttpRequest的结果
}
您可能更喜欢:
processString(字符串jsonString){
//创建相关数据的地图
返回myMap;
}
void main(){
HttpRequest.getString(url).then((resp){
map=processString(resp);
//对处理后的结果做点什么!
});
//这里的任何代码都无法访问HttpRequest的结果
}
谢谢您的回答。似乎我也无法从HttpRequest
内部更改顶级变量,即使它位于main()
内。这是因为我正在处理一个可能在main()
之后运行的Future
?还是我遇到了范围问题?@jacobrharris您可以从匿名函数或processString()
访问(更改)任何顶级变量。但是,您在main()
中看不到进一步的更改,因为在main()
完成之前,回调不会运行。