不要等待对话被取消但仍然存储返回的答案? (苹果脚本)

Don't wait for dialog to be dismissed but still store the returned answer? (Applescript)

使用 ignoring application responses 我可以在对话框仍然打开时执行代码,如下所示:

ignoring application responses
    (display dialog "Type some text:" default answer ¬
        "" buttons {"Okay"} default button 1)
end ignoring
display dialog "boo"

(在此示例中,显示消息 "boo" 的代码在执行前不等待第一个对话框得到回答。)

很明显,当我尝试像这样存储第一个对话的结果时:

set myText to ""
ignoring application responses
    set myText to (display dialog "Type some text:" default answer ¬
        "" buttons {"Okay"} default button 1)
end ignoring
return myText

return myText 给出错误:"myText is not defined"

有没有什么办法可以不等对话被回答,仍然得到结果?

当然不可能。主要原因是 AppleScript 在单个同步线程中运行。

顾名思义,ignoring application responses 不等待对发送的 Apple 事件的响应 sysodlog(显示对话框)。变量 myText 未设置,下一行立即执行。

另见错误信息No result was returned from some part of this expression.添加代码直接获取返回文本

set myText to text returned of (display dialog …