Dart中如何实现异步API调用的延迟返回控制?
解决方案
你需要让API调用和延迟操作同时执行,而不是等延迟结束再调用API。Dart里可以用Future.wait()来实现这个逻辑,它会等待传入的所有Future完成后才继续执行,正好匹配你的需求:
// 同时启动API调用和1500ms延迟 final results = await Future.wait([ apiCall(), // 立即发起API请求 Future.delayed(const Duration(milliseconds: 1500)) // 同时开始计时 ]); // 取API调用的结果(results[0]是apiCall的返回值,results[1]是延迟的空结果) final result = results[0];
逻辑说明
- 如果
apiCall()在1500ms内完成:程序会继续等待延迟结束,到1500ms整时返回结果 - 如果
apiCall()耗时超过1500ms:延迟Future先完成,程序会继续等待API调用完成,一旦API返回就立刻返回结果
你之前代码的问题
你写的Future.delayed是把apiCall()作为延迟结束后的回调,这就导致API请求要等1500ms后才开始执行,完全不符合需求。正确的做法是让两个Future并行执行,再等待它们全部完成。
内容的提问来源于stack exchange,提问作者Jayasubin J
相关产品推荐
相关产品推荐

