首页 > 解决方案 > osascript 比脚本编辑器慢得多

问题描述

首先,我承认我开始使用 JXA(Mac os 的 Javascript 自动化)的新项目,但对 AppleScript 没有太多了解。

目前,我正在尝试使用JXA运行以下命令:

Application("System Events").processes.windows.name()

首先,我使用脚本编辑器来运行它。它工作得很好,我很快就得到了输出。

但是,根据我的用例,由于我想经常从我的一个 bash 脚本中获取此代码的输出,因此我尝试使用osascript执行它,如下所示

osascript -l JavaScript -e 'Application("System Events").processes.windows.name()' 

但这一次,在控制台中打印结果需要几秒钟。

现在我的问题是,与脚本编辑器相比,为什么在 osascript 中执行相同的脚本需要太多时间?有没有办法优化它的性能?

标签: macososascriptjavascript-automation

解决方案


这是 JXA 解决方案:

var winList = Application("System Events").processes.whose({backgroundOnly: {'=': false} }).windows.name();

var winList2 = winList.reduce(
  function(accumulator, currentValue) {
    return accumulator.concat(currentValue);
  },
  []
);
winList2 = winList2.filter(e => (e !== ""));
winList2.join(',')

那些 JavaScript 大师可能会提供更好的 JavaScript。


推荐阅读