Future 异步函数的返回值问题
Posted
技术标签:
【中文标题】Future 异步函数的返回值问题【英文标题】:Problem with the return value from a Future async function 【发布时间】:2019-10-08 06:34:08 【问题描述】:我创建了一个从 api 获取 json 的函数。问题是该函数没有返回值。它返回“未来的实例......”
我尝试了不同的方法来解决它。如果我打印应该返回的值 (print(extractdata[1])) 它实际上会返回它应该返回的值:
id: 2
name: Sala 2,
beds: [
id: 3,
name: Cama 3,
paciente: null
,
id: 4,
name: Cama 4,
paciente: null
]
Future <List> getRoom() async
SharedPreferences prefs = await SharedPreferences.getInstance();
var _token = prefs.getString('token');
final response = await http.get('http://10.0.2.2:8000/api/room/',
headers: 'Authorization':'JWT $_token'
).then((res)
var extractdata = JSON.jsonDecode(res.body);
return extractdata;
);
我希望输出是所有房间的列表,但它返回的是“未来实例...”。 如果我尝试获取长度,如果我在函数内打印它,它会起作用,但如果我调用函数然后询问长度,它就不起作用。
【问题讨论】:
【参考方案1】:由于您使用的是 async/await,因此您不需要使用then
。
Future <List> getRoom() async
SharedPreferences prefs = await SharedPreferences.getInstance();
var _token = prefs.getString('token');
final response = await http.get('http://10.0.2.2:8000/api/room/',
headers: 'Authorization':'JWT $_token'
);
var extractdata = JSON.jsonDecode(response.body);
return extractdata;
【讨论】:
我尝试了你的建议,但它仍然检索“接收者:未来实例以上是关于Future 异步函数的返回值问题的主要内容,如果未能解决你的问题,请参考以下文章