diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js index e6c94354..0c5d4179 100644 --- a/src/octoprint/static/js/app/viewmodels/settings.js +++ b/src/octoprint/static/js/app/viewmodels/settings.js @@ -279,20 +279,25 @@ $(function() { type: "GET", dataType: "json", success: function(response) { - var callbacks = self.callbacks; - self.callbacks = []; - if (callback) { - callbacks.push(callback); + self.callbacks.push(callback); } try { self.fromResponse(response); - _.each(callbacks, function(cb) { - cb(); - }); + + var cb; + while (self.callbacks.length) { + cb = self.callbacks.shift(); + try { + cb(); + } catch(exc) { + log.error("Error calling settings callback", cb, ":", (exc.stack || exc)); + } + } } finally { self.receiving(false); + self.callbacks = []; } }, error: function(xhr) {