这个逻辑是控制流细节，不应该放在视图中