javascript - 在没有 setInterval 的情况下每“x”秒运行一次代码
问题描述
我正在编写一个 Cinnamon 面板小程序(在 JavaScript 中),它每 20-120 秒轮询一次 set 命令以获取信息,由用户设置。但问题是setInterval
Cinnamon 小程序使用的 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 秒运行一次代码。
解决方案
@blex 发现通过导入 Mainloop 可以得到一个 timeout_add_seconds 函数:https ://github.com/axos88/cinnamon-countdown-timer/blob/master/applet.js#L213
推荐阅读
- sql - SELECT DATEPART, DATENAME or other? SQL
- asynchronous - 如何映射()一个流,直到它在 Dart 中被取消?
- azure - Question on azure service fabric application design
- git - How to push files from a git bare repo AFTER commit with post-receive
- c# - EF Core 2.2 空间类型无法添加到数据库迁移
- c# - C# facebook sdk : (OAuthException - #100) (#100) GK 中的应用只需要通过 TOS 检查
- angular - MatDialog 不显示通过订阅更新的值
- php - Laravel MethodNotAllowedHttpException (405) 文件上传
- html - 如何使用 Python 从 GitHub 中提取评论正文
- detox - 在 ScrollView 组件上使用 whileElement().scroll() 进行无休止的非滚动