async do while循环中是否允许使用await语法?
do { await future; } while (condition);
上述写法是完全合法的,只要满足await的基础使用前提即可:
- 整个循环定义在
async修饰的函数内部,或者运行在支持顶层await的ES模块环境中
执行逻辑
这段代码的运行顺序是固定的串行逻辑:
- 首次直接进入循环体,等待
await后的异步任务future执行完成 - 异步任务执行完毕后,再判断
while括号内的condition条件 - 条件成立则再次进入循环体执行异步任务,不成立就直接退出循环
适用场景与注意事项
- 这种写法非常适合需要串行执行异步任务的场景,比如反复请求分页接口直到拿到全部数据、轮询接口直到返回符合要求的结果这类需求,实现起来非常简洁
- 如果你没有强制要求异步任务按顺序执行,这种依次等待的写法会比并行处理的效率低,可根据实际业务场景选择合适的实现方案
内容的提问来源于stack exchange,提问作者justchris
相关产品推荐
相关产品推荐

