Merge pull request #6988 from jasongrout/promises-again

Clean up promises code some more.
Jonathan Frederic 12 years ago
commit 295050060e

@ -70,23 +70,21 @@ define([
this.comms[comm_id] = utils.load_class(content.target_name, content.target_module,
this.targets).then(function(target) {
var comm = new Comm(content.target_name, comm_id);
comm.kernel = that.kernel;
try {
var response = target(comm, msg);
if (response instanceof Promise) {
return response.then(function() { return Promise.resolve(comm); });
var comm = new Comm(content.target_name, comm_id);
comm.kernel = that.kernel;
try {
var response = target(comm, msg);
} catch (e) {
comm.close();
that.unregister_comm(comm);
var wrapped_error = new utils.WrappedError("Exception opening new comm", e);
console.error(wrapped_error);
return Promise.reject(wrapped_error);
}
} catch (e) {
comm.close();
that.unregister_comm(comm);
var wrapped_error = new utils.WrappedError("Exception opening new comm", e);
console.error(wrapped_error);
return Promise.reject(wrapped_error);
}
return Promise.resolve(comm);
}, utils.reject('Could not open comm', true));
// Regardless of the target return value, we need to
// then return the comm
return Promise.resolve(response).then(function() {return comm;});
}, utils.reject('Could not open comm', true));
return this.comms[comm_id];
};
@ -104,6 +102,8 @@ define([
} catch (e) {
console.log("Exception closing comm: ", e, e.stack, msg);
}
// don't return a comm, so that further .then() functions
// get an undefined comm input
});
};
@ -120,7 +120,7 @@ define([
} catch (e) {
console.log("Exception handling comm msg: ", e, e.stack, msg);
}
return Promise.resolve(comm);
return comm;
});
};

@ -49,24 +49,21 @@ define([
WidgetManager.prototype.display_view = function(msg, model) {
// Displays a view for a particular model.
var that = this;
return new Promise(function(resolve, reject) {
var cell = that.get_msg_cell(msg.parent_header.msg_id);
if (cell === null) {
reject(new Error("Could not determine where the display" +
" message was from. Widget will not be displayed"));
} else if (cell.widget_subarea) {
var dummy = $('<div />');
cell.widget_subarea.append(dummy);
that.create_view(model, {cell: cell}).then(function(view) {
var cell = this.get_msg_cell(msg.parent_header.msg_id);
if (cell === null) {
return Promise.reject(new Error("Could not determine where the display" +
" message was from. Widget will not be displayed"));
} else if (cell.widget_subarea) {
var dummy = $('<div />');
cell.widget_subarea.append(dummy);
return this.create_view(model, {cell: cell}).then(
function(view) {
that._handle_display_view(view);
dummy.replaceWith(view.$el);
view.trigger('displayed');
resolve(view);
}, function(error) {
reject(new utils.WrappedError('Could not display view', error));
});
}
});
return view;
}, utils.reject('Could not display view'));
}
};
WidgetManager.prototype._handle_display_view = function (view) {

@ -95,7 +95,6 @@ define(["widgets/js/manager",
} finally {
that.state_lock = null;
}
return Promise.resolve();
}, utils.reject("Couldn't set model state", true));
},

Loading…
Cancel
Save