BB: Polling Model
by kyllle
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.2/backbone-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.min.js"></script>
JavaScript
console.clear();
var jsonData = {
"id": Math.floor(Math.random() * 20),
"title": "Data title 1"
}
var PollingModel = Backbone.Model.extend({
url: '/echo/json/',
polling: false,
interval: 5000,
startPolling: function() {
this.polling = true;
this.poll();
},
stopPolling: function() {
this.polling = false;
},
poll: function() {
this.fetch({
data: {
json: JSON.stringify(jsonData)
},
type: 'POST',
success: function(model, response, options) {
console.log('✓✓✓ SUCCESS::', model, response, options);
this.onFetch();
}.bind(this),
error: function() {
console.log('✖✖✖ ERROR::', model, response, options);
this.onFetchError();
}
});
},
onFetch: function() {
if (this.polling) {
setTimeout(this.poll.bind(this), this.interval);
}
},
onFetchError: function() {
// increment counter
}
});
var pollingModel = new PollingModel().startPolling();