簡體   English   中英

計算是否支持 asnc 請求?

[英]Does compute support asnc request?

我有一個字符串地址列表,如:

List<String> addressStrings = [....];

我正在使用geocoding插件來獲取這些地址字符串的地址數據和標記,例如:

//This is a class-level function
Future<List<MarkerData>> getMarkerDataList() async {
  List<MarkerData> list = [];
  addressStrings.forEach((element) async {
    final result = await locationFromAddress(element);
    final markerData = MarkerData(element, result.first);

    list.add(markerData);
});

  return list;
}

但它按預期凍結了 UI。 我嘗試使用compute在另一個隔離中執行操作,例如:

//This is a top-level function
Future<List<MarkerData>> getMarkerDataList(List<String> addressStrings) async {
  List<MarkerData> list = [];
  addressStrings.forEach((element) async {
    final result = await locationFromAddress(element);
    final markerData = MarkerData(element, result.first);

    list.add(markerData);
});

  return list;
}



//This is a class-level function
Future<List<MarkerData>> getMarkerData()async{
  final result = await compute(getMarkerDataList, addressStrings);
  return result;
}

但它不起作用並在控制台中顯示Unhandled exception

我猜final result = await locationFromAddress(element); 請求是這里的問題。 因為它確實在該聲明之前通過了,但沒有通過該聲明。

所以,我的問題是: compute支持async 如果是的話,我在這里做錯了什么? 如果不是,我怎樣才能在不阻塞 UI 的情況下有效地執行這樣的異步性能密集型任務?

是的,據我所知 async 確實支持計算 - 這是一篇應該有幫助的文章:

https://medium.com/flutterdevs/flutter-performance-optimization-17c99bb31553

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM