同步和异步函数

从工具栏按钮和热键启动的外部程序可以是同步或异步的。

  • 此上下文的同步性意味着:

    • 包含多个命令的函数一次运行其中一个命令。Opus 会等到每个命令完成再运行下一个命令。

    • 当命令使用所选文件而选取了多个文件时,这些文件将一次一个地进行处理。

  • 异步是反向的:

    • 包含多个命令的函数将同时运行这些命令(或至少在运行下一个命令前,不会等待一个命令完成)。

    • 当选取了多个文件时,Opus 不会在处理第一个文件之前等到处理下一个文件。

简单示例,为了说明区别,我们采用一个运行 Notepad 并将选定项目名称传给它的命令:

notepad.exe {f}

当运行此命令时,如果只选取一个文件,Notepad 将打开并显示选定的文件,这就是全部。然而,如果你运行命令时选取了三个文件,行为就会有所不同:

  • 如果你同步运行,Notepad 将打开并显示第一个文件。当你关闭 Notepad 的那个实例时,另一个实例将立即打开并显示第二个文件。关闭第二个 Notepad 窗口将打开第三个实例,并显示第三个文件。

  • 如果你异步运行,将会得到三个 Notepad 进程同时打开,每个进程都显示不同的文件。

默认情况下,包含单个命令的函数会异步运行,而包含两个或更多命令的函数会同步运行。你可以通过以下几种方式覆盖此设置:

  • 使用 @async 命令修饰符,强制命令异步运行。

  • 使用 @sync 命令修饰符,强制命令同步运行。

  • 你可以在配置中的 其它/高级 页面上设置 function_default_async 标记为 ,以使所有函数(单命令或多命令)默认情况下异步运行。

内部命令总是同步运行 - Opus 会总是在函数中的内部命令完成之前,再继续进行下一个指令。如果你想出于某种原因异步运行内部命令,可以使用 DOpusRT 命令(即 dopusrt /cmd)运行它 - 然后它将作为外部程序执行,并遵守 @sync@async 修饰符。

最后更新于