我正在尝试(如标题所示)在插件中使用 sublime text 3 的 set_timeout 函数。
据我了解,在许多情况下都需要使用 lambda 函数。所以我尝试了这个简单的测试:
class SetTimeoutTestCommand(sublime_plugin.WindowCommand):
def run(self):
for x in range(1,10):
sublime.set_timeout(lambda : print(x), 4000)
所以我希望我一次打印一个数字,每个数字之间有 4 秒的延迟。如 Sublime 3 API 中所述:
在给定延迟(以毫秒为单位)后在主线程中运行回调。具有相同延迟的回调将按照添加的顺序运行。
但相反,我有 9 个 '9' 会在 4 秒后打印出来。因此,基于循环的第一次迭代,所有 '9' 都会同时打印。
你知道我能做些什么来解决这个问题吗?
提前致谢 !
编辑:我发现这是有效的(嗯,打印 '9' 9 次,每次之间有 1 秒的延迟:
class SetTimeoutTestCommand(sublime_plugin.WindowCommand):
def run(self):
for x in range(1,10):
sublime.set_timeout(lambda : print(x), x*1000)
但问题仍然存在:它只打印出'9' ....