异步函数中的 Dart return 关键字
Dart return keyword in an async function
有人能告诉我为什么即使状态为真,return "NOK"
代码仍会执行吗?
这不就是return关键字停止函数执行和return值的目的吗?还是我错过了一些关于异步函数或 Dart 语言本身的东西?
static dynamic getUserRef() async {
// HttpOverrides.global = MyHttpOverrides();
bool status;
await InfosHelper.getInfo('testinfo').then((response) {
InfoModel info = InfoModel.fromJson(response.data);
status = info.status;
Map<String, dynamic> otherData = info.data;
if (status) {
return "OK";
}
});
return "NOK";
}
试试这个
static Future<String> getUserRef() async {
// HttpOverrides.global = MyHttpOverrides();
final response = await InfosHelper.getInfo('testinfo');
InfoModel info = InfoModel.fromJson(response.data);
bool status = info.status;
Map<String, dynamic> otherData = info.data;
return status ? "OK" : "NOK";
}
您正在调用 .then,这是它自己的一个方法,因此状态为 true 将停止执行 .then 方法,但主 getUserRef 始终 return 'Nok'
static dynamic getUserRef() async {
// HttpOverrides.global = MyHttpOverrides();
bool status;
var response=await InfosHelper.getInfo('testinfo');
if (response!=null){
InfoModel info=InfoModel.fromJson(response.data);
Map<String, dynamic> otherData = info.data;
if(info.status){
return 'ok';
}
else{
return 'nok'}
}
}
else{
//Error
}
有人能告诉我为什么即使状态为真,return "NOK"
代码仍会执行吗?
这不就是return关键字停止函数执行和return值的目的吗?还是我错过了一些关于异步函数或 Dart 语言本身的东西?
static dynamic getUserRef() async {
// HttpOverrides.global = MyHttpOverrides();
bool status;
await InfosHelper.getInfo('testinfo').then((response) {
InfoModel info = InfoModel.fromJson(response.data);
status = info.status;
Map<String, dynamic> otherData = info.data;
if (status) {
return "OK";
}
});
return "NOK";
}
试试这个
static Future<String> getUserRef() async {
// HttpOverrides.global = MyHttpOverrides();
final response = await InfosHelper.getInfo('testinfo');
InfoModel info = InfoModel.fromJson(response.data);
bool status = info.status;
Map<String, dynamic> otherData = info.data;
return status ? "OK" : "NOK";
}
您正在调用 .then,这是它自己的一个方法,因此状态为 true 将停止执行 .then 方法,但主 getUserRef 始终 return 'Nok'
static dynamic getUserRef() async {
// HttpOverrides.global = MyHttpOverrides();
bool status;
var response=await InfosHelper.getInfo('testinfo');
if (response!=null){
InfoModel info=InfoModel.fromJson(response.data);
Map<String, dynamic> otherData = info.data;
if(info.status){
return 'ok';
}
else{
return 'nok'}
}
}
else{
//Error
}