首页 > 解决方案 > 在没有 setInterval 的情况下每“x”秒运行一次代码

问题描述

我正在编写一个 Cinnamon 面板小程序(在 JavaScript 中),它每 20-120 秒轮询一次 set 命令以获取信息,由用户设置。但问题是setIntervalCinnamon 小程序使用的 JavaScript 子集(?)中不存在。我试着用这个:

function sleep(milliseconds) {
    const date = Date.now();
    let currentDate = null;
    do {
      currentDate = Date.now();
    } while (currentDate - date < milliseconds);
}

这不起作用,因为它会锁定整个面板,milliseconds除非它正在运行。

while (true) {
    sleep(seconds*1000)
    this.set_applet_label(cmd_output)
}

这是我正在使用的循环的代码。 我需要的是某种非阻塞方式在 JavaScript 中每 X 秒运行一次代码。

标签: javascriptcinnamon

解决方案


@blex 发现通过导入 Mainloop 可以得到一个 timeout_add_seconds 函数:https ://github.com/axos88/cinnamon-countdown-timer/blob/master/applet.js#L213


推荐阅读