gpt4 book ai didi

flutter - 如何等待对Web服务的调用并在Flutter中传递对多个源的答案

转载 作者:行者123 更新时间:2023-12-03 04:40:49 27 4
gpt4 key购买 nike

我有一个从数据库中获取数据的函数,如果没有数据,它将调用Web Service,将答案放在数据库中并返回答案。
为了避免多次调用Web服务,如果在对Web Service的调用仍在运行时有多个函数调用,我希望在第一个调用之后的每个调用都等待第一个调用的应答而不调用Web Service 。
我该如何实现?
我有代码示例:

Future<String> function() async {
String data = await database.getData();
if (data == null) {
data = await callWebService();
await database.setData(data);
}
return data
}
如果这很重要,我将使用Chopper进行Web服务调用,并使用Mobx来管理应用程序的状态。

最佳答案

您可以使用completer实现您想要的
检查下面的示例代码。

class TestService {
Completer<String> _completer;

Future<String> function() async {
if (_completer == null) {
_completer = Completer<String>();
} else {
return _completer.future;
}

String data = await database.getData();
if (data == null) {
data = await callWebService();
await database.setData(data);
}
_completer.complete(data);
_completer = null;
return data;
}
}

关于flutter - 如何等待对Web服务的调用并在Flutter中传递对多个源的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63247947/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com