我在使用计算功能时有问题。我有一个像下面这样的高阶函数;
Future<DistrictTimeData> getDistrictTimeData(String path) async {
Uri url = Uri.parse(ApiConstants.instance.baseUrl + "/$path");
var res = await http.get(url);
if (res.statusCode != 200) throw Exception('Bir hata oluştu.');
return DistrictTimeData.fromJson(jsonDecode(res.body));
}
我能够像这样在计算机中工作这个函数;
@override
void init() async{
changeLoading();
districtTimeData=await compute(NetworkManager.instance!.getDistrictTimeData,path);
changeLoading();
}
问题从下面的函数开始,它不是一个高阶函数;
Future<List> getTimeZones() async {
Uri url = Uri.parse(ApiConstants.instance.baseUrl);
var res = await http.get(url);
if (res.statusCode != 200) throw Exception('Bir hata oluştu.');
return jsonDecode(res.body);
}
当我试图计算这个函数时,它除了一个参数之外,这个参数应该是我试图计算的函数的参数。这个函数没有这样的参数因为它不是一个高阶函数。我的问题是如何计算非高阶函数?提前谢谢。
最好不要使用像(_) => getTimeZones
这样的闭包,正如compute
文档中所解释的那样:
相反,可以使用一个简单的包装函数:使用闭包必须小心。由于dart-lang/sdk#36983的规定,闭包可能会捕获一些对象,这些对象虽然没有直接在闭包本身中使用,但可能会阻止它被发送到隔离对象。
Future<List> computeTimeZones(void _) => getTimeZones();