我有一个函数,它发出一个API调用,通常在50毫秒到6秒之间的任何延迟之后收到响应。如果API调用在1500毫秒内完成,我希望结果在1500毫秒内准确到达,如果API响应在1500毫秒后完成,它应该在收到响应后立即返回结果。
我试着用这个:
final result = await Future.delayed(Duration(milliseconds: 1500,() async => await apiCall();
但这样做的问题是,apiCall()
函数只有在1500 mils的延迟之后才被调用。
在dart中有没有直接的方法来实现这一点?有人试过吗?
1条答案
按热度按时间jfgube3f1#
创建一个helper函数来测量API调用所花费的时间,然后在返回结果之前添加适当的延迟,这是相当简单的:
然后你会调用它:
或者,您可以使用
Future.wait
将原始Future
与Future.delayed
组合。但是,Future.wait
希望Future
具有异构类型,因此您需要转换(无论是显式还是隐式,如果允许隐式dynamic
转换):或者使用an assignment technique to deal with heterogeneous
Future
s:您也可以使用one of the
.wait
extensions,但正确的错误处理将需要更多的工作: