(タイトルが示すように) プラグインで崇高なテキスト 3 の set_timeout 関数を使用しようとしています。
私が理解したところでは、多くの場合、ラムダ関数の使用が必要です。だから私はこの簡単なテストを試しました:
class SetTimeoutTestCommand(sublime_plugin.WindowCommand):
def run(self):
for x in range(1,10):
sublime.set_timeout(lambda : print(x), 4000)
そのため、それぞれの間に 4 秒の遅延で、一度に 1 つずつ番号が印刷されると予想していました。Sublime 3 API で説明されているように:
指定された遅延 (ミリ秒単位) の後、メイン スレッドでコールバックを実行します。遅延が等しいコールバックは、追加された順序で実行されます。
しかし、代わりに、4 秒後に印刷される 9 つの '9' があります。したがって、ループの最初の繰り返しに基づいて、すべての「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' しか出力されません ....