在构建Atlasboard Job时,我想控制将数据推送到窗口小部件的位置和时间。
我无法找到记录“interval”配置参数的位置 - 我的理解是每隔ms会安排一次作业。
我想控制我的工作何时更新小工具。因此我做了一个小测试:
setInterval(function() {
x = x+1;
jobCallback(null, {title: config.widgetTitle + " - "+x});
}, 10000);
起初我感到高兴,因为它似乎有效,但我注意到了日志消息:
[dashboard: xxx] [job: xxx] 14:04:27.93 <warn> WARNING!!!!: job_callback executed more than once for job xxx in dashboard xxx (scheduler.js)
[dashboard: xxx] [job: xxx] 14:04:27.96 <warn> WARNING!!!!: job_callback executed more than once for job xxx in dashboard xxx (scheduler.js)
[dashboard: xxx] [job: xxx] 14:04:37.94 <warn> WARNING!!!!: job_callback executed more than once for job xxx in dashboard xxx (scheduler.js)
我可能会补充说,经过几分钟后,工作似乎就会自我复制,而全局参数似乎无法保持工作实例之间的全局价值 - 这样,在我的单一'重复工作'成为十个工作后,很快就会超过100个等等。 / p>
有没有办法更好地控制何时将数据推送到窗口小部件? 是否有比https://bitbucket.org/atlassian/atlasboard和http://atlasboard.bitbucket.org/更好的文档?
答案 0 :(得分:1)
我在搜索过程中发现了以下内容并查看了jobWorker代码(我无法在任何地方找到任何文档)。
有一个pushUpdate成员函数被添加到jobWorker中 - 看起来好像它最好在Job onInit()期间使用 - 这样我们可以确保它只被激活一次!
onInit: function (config, dependencies) {
var jobWorker = this;
var x = 0;
setInterval(function() {
x = x+1;
jobWorker.pushUnpdate({title: config.widgetTitle + " - "+x);
}, 10000);
}
请注意,如果您控制更新的计划,则无需实现Job onRun() - 这意味着不会为您的作业激活任何计划程序。