You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift服务端异步Task中print无输出问题求助

Swift服务端Async Task内无print输出的问题解决

你的代码核心问题是:同步的main()函数执行完毕后,程序直接退出,导致你创建的后台Task还没来得及执行就被终止了,所以看不到"Test print2"的输出。

解决方法

方法1:将main函数改为异步(推荐)

Swift支持异步的main方法,修改后让主线程等待异步任务完成:

@main
struct PostgresTest {
    static func main() async {
        print("Test print1")
        // 等待Task内的异步代码执行完成
        await Task {
            print("Test print2")
            await TestPostgres.connectDisconnect()
        }.value
    }
}

这样程序会等到Task里的所有代码执行完毕后才会退出,终端就能正常输出"Test print2"。

方法2:手动阻塞主线程(仅作临时测试)

如果暂时不想修改main的异步属性,可以在main函数末尾添加阻塞逻辑,让主线程不立即退出:

@main
struct PostgresTest {
    static func main() {
        print("Test print1")
        Task {
            print("Test print2")
            await TestPostgres.connectDisconnect()
            // 任务完成后主动退出程序
            exit(0)
        }
        // 阻塞主线程,等待异步任务完成
        RunLoop.main.run()
    }
}

这种方法依赖RunLoop,仅适合临时验证,服务端开发更推荐使用异步main的标准写法。

内容的提问来源于stack exchange,提问作者Tomm P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:42:02