Flutter 并行网络调用
Flutter Parallel Network call
我是 flutter 的新手。我需要在单个屏幕中调用 5 API 个网络调用。我使用 Async/await 时花费了很长时间。我们如何使用 isolate 或其他类似的东西在单独的线程上并行执行它?
您可以使用 dio
包并调用多个并发 API 请求,请查看文档:
Package: https://pub.dev/packages/dio
您可以使用 Future.wait()
Here is the answer with an example
您可以为此目的使用 isolate isolate 是 dart 中的一种多线程。 Isolate 创建一个新线程并在新线程上执行操作,以便分配负载。您不能将变量作为数据来回发送,而是使用端口发送消息。
这里是一个简单的隔离示例,调用 API 并使用端口将数据发送回主线程。
首先让我们创建一个函数,它将作为 isolate 的入口点:
static entryPoint(SendPort sendPort)async{
var response = await http.get('https://www.thecocktaildb.com/api/json/v1/1/search.php?s=margarita');
sendPort.send(response.body); //sending data back to main thread's function
}
现在让我们创建隔离:
static void callApi()async{
var recievePort = new ReceivePort(); //creating new port to listen data
await Isolate.spawn(entryPoint, recievePort.sendPort);//spawing/creating new thread as isolates.
recievePort.listen((message) { //listening data from isolate
print(message);
});
}
我是 flutter 的新手。我需要在单个屏幕中调用 5 API 个网络调用。我使用 Async/await 时花费了很长时间。我们如何使用 isolate 或其他类似的东西在单独的线程上并行执行它?
您可以使用 dio
包并调用多个并发 API 请求,请查看文档:
Package: https://pub.dev/packages/dio
您可以使用 Future.wait()
Here is the answer with an example
您可以为此目的使用 isolate isolate 是 dart 中的一种多线程。 Isolate 创建一个新线程并在新线程上执行操作,以便分配负载。您不能将变量作为数据来回发送,而是使用端口发送消息。
这里是一个简单的隔离示例,调用 API 并使用端口将数据发送回主线程。
首先让我们创建一个函数,它将作为 isolate 的入口点:
static entryPoint(SendPort sendPort)async{
var response = await http.get('https://www.thecocktaildb.com/api/json/v1/1/search.php?s=margarita');
sendPort.send(response.body); //sending data back to main thread's function
}
现在让我们创建隔离:
static void callApi()async{
var recievePort = new ReceivePort(); //creating new port to listen data
await Isolate.spawn(entryPoint, recievePort.sendPort);//spawing/creating new thread as isolates.
recievePort.listen((message) { //listening data from isolate
print(message);
});
}