nob*_*be4 1 python settimeout sublimetext3 sublime-text-plugin
我正在尝试在插件中使用(如标题所示)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)
Run Code Online (Sandbox Code Playgroud)
所以我希望我一次打印一个数字,每个数字之间有 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)
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在:它只打印出 '9' ....
要打印不同的数字,请更改您的插件脚本
class SetTimeoutTestCommand(sublime_plugin.WindowCommand):
def run(self, edit):
for x in range(1,10):
sublime.set_timeout(lambda x=x: print(x), x*1000)
Run Code Online (Sandbox Code Playgroud)
因为所有 lambda 函数都引用相同的函数,x并且当它被执行时,x值会达到9.
| 归档时间: |
|
| 查看次数: |
1065 次 |
| 最近记录: |