gpt4 book ai didi

ember.js - setInterval 和 clearInterval 的 Ember 实现是什么

转载 作者:行者123 更新时间:2023-12-04 11:23:21 26 4
gpt4 key购买 nike

Ember 有以下 setTimeout 的实现,推荐开发人员使用,因为代码被添加到运行循环中,这对测试有好处。

           Ember.run.later((function() {
console.log("will run once after 1000");
}), 1000);
setInterval 是否有类似的 Ember 替代品?并且,暗示, clearInterval (用于取消 setInterval)?我需要运行 someFunc每 1000 毫秒
this.intervalId = setInterval(this.someFunc.bind(this), 1000);

最佳答案

我不知道有任何等价物,但我使用这样的代码来实现以下功能:

var Poller = Ember.Object.extend({

_interval: 1000,
_currentlyExecutedFunction: null,

start: function(context, pollingFunction) {
this.set('_currentlyExecutedFunction', this._schedule(context, pollingFunction, [].slice.call(arguments, 2)));
},

stop: function() {
Ember.run.cancel(this.get('_currentlyExecutedFunction'));
},

_schedule: function(context, func, args) {
return Ember.run.later(this, function() {
this.set('_currentlyExecutedFunction', this._schedule(context, func, args));
func.apply(context, args);
}, this.get('_interval'));
},

setInterval: function(interval) {
this.set('_interval', interval);
}

});

export
default Poller;

然后,您实例化轮询器: var poller = Poller.create()然后你可以玩 poller.start()poller.stop() + set 通过 poller.setInterval(interval) 设置间隔.

在我的代码中,我或多或少是这样做的(每 10 秒轮询一次报告):
_updateRunningReport: function(report) {
var poller = new Poller();
poller.setInterval(this.POLLING_INTERVAL);
poller.start(this, function() {
if (report.isRunning()) {
this._reloadReport(report);
} else {
poller.stop();
}
});
eventBus.onLogout(function() {
poller.stop();
});
},

希望这可以帮助...

关于ember.js - setInterval 和 clearInterval 的 Ember 实现是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28310414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com