Ich bin nicht bekannt, dass äquivalent zu laufen, aber ich benutze einen solchen Code, um die Funktionalität zu haben:
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;
Dann instanziieren Sie die poller: var poller = Poller.create()
und dann können Sie mit poller.start()
und poller.stop()
spielen + setzen Sie das Intervall über poller.setInterval(interval)
.
In meinem Code, ich habe mehr oder weniger auf diese Weise (Polling die Berichte alle 10 Sekunden):
_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();
});
},
Hope this helps ...
Das ist schön Code. Vielen Dank. Um sicherzustellen, dass ich es richtig verwende, habe ich Ihre Antwort (genau so, wie Sie es geschrieben haben) in meine Datei eingefügt, eine Instanz erstellt und dann (dies ist der Teil, in dem ich Hilfe brauche) von einem Controller aufgerufen, der 'this' übergibt So wie der Kontext: 'poller.start (this, this.queryFunction);' Ist es das, was Du Dir vorgestellt hast? – Leahcim
, d. H. Ist das so, wie Sie es sich vorgestellt haben? Ich benutze es, d. H. Es von einem Controller aus aufrufen? – Leahcim
ja, das ist genau, wie ich es benutze :) + Ich habe einen Listener für einige Aktionen, um den Poller zu stoppen – andrusieczko