ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 同步和异步函数 从工具栏按钮和热键启动的外部程序可以是同步或异步的。 - 此上下文的同步性意味着: - 包含多个命令的函数一次运行其中一个命令。Opus 会等到每个命令完成再运行下一个命令。 - 当命令使用所选文件而选取了多个文件时,这些文件将一次一个地进行处理。 - 异步是反向的: - 包含多个命令的函数将同时运行这些命令(或至少在运行下一个命令前,不会等待一个命令完成)。 - 当选取了多个文件时,Opus 不会在处理第一个文件之前等到处理下一个文件。 简单示例,为了说明区别,我们采用一个运行 Notepad 并将选定项目名称传给它的命令: `notepad.exe {f}` 当运行此命令时,如果只选取一个文件,Notepad 将打开并显示选定的文件,这就是全部。然而,如果你运行命令时选取了三个文件,行为就会有所不同: - 如果你同步运行,Notepad 将打开并显示第一个文件。当你关闭 Notepad 的那个实例时,另一个实例将立即打开并显示第二个文件。关闭第二个 Notepad 窗口将打开第三个实例,并显示第三个文件。 - 如果你异步运行,将会得到三个 Notepad 进程同时打开,每个进程都显示不同的文件。 默认情况下,包含单个命令的函数会异步运行,而包含两个或更多命令的函数会同步运行。你可以通过以下几种方式覆盖此设置: - 使用 **@async** [命令修饰符](command_modifiers.zh.md),强制命令异步运行。 - 使用 **@sync** [命令修饰符](command_modifiers.zh.md),强制命令同步运行。 - 你可以在配置中的 **[其它/高级](/Manual/preferences/preferences_categories/miscellaneous/advanced_options.zh.md)** 页面上设置 **function_default_async** 标记为 *真*,以使所有函数(单命令或多命令)默认情况下异步运行。 内部命令总是同步运行 - Opus 会总是在函数中的内部命令完成之前,再继续进行下一个指令。如果你想出于某种原因异步运行内部命令,可以使用 [DOpusRT](/Manual/reference/dopusrt_reference/README.zh.md) 命令(即 **dopusrt /cmd**)运行它 - 然后它将作为外部程序执行,并遵守 **@sync** 和 **@async** 修饰符。