我在使用計算功能時遇到問題。我有一個高階函式,如下所示;
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);
}
當我嘗試計算這個函式時,除了 1 個引數之外,它被認為是我試圖計算的函式的引數。該函式沒有這樣的引數,因為它不是高階函式。我的問題是計算非高階函式的方法是什么?提前致謝。
uj5u.com熱心網友回復:
最好不要使用這樣的閉包,如檔案(_) => getTimeZones中所述:compute
使用閉包必須小心。由于dart-lang/sdk#36983的原因,閉包可能會捕獲物件,這些物件雖然不直接用于閉包本身,但可能會阻止它被發送到隔離區。
相反,可以制作一個簡單的包裝函式:
Future<List> computeTimeZones(void _) => getTimeZones();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496472.html
上一篇:我們可以在函式末尾回傳建構式嗎
下一篇:將類更改為功能組件
