I’ve got a couple of questions about this small snippett adapted from a tutorial I found here.
var loader = (function ($, host) {
return {
loadTemplate: function (path) {
var tmplLoader = $.get(path)
.success(function (result) {
$("body").append(result);
})
.error(function (result) {
alert("Error Loading Template");
}) // --> (1) SEMICOLON?
// (2) How does this wire up an event to the previous
// jQuery AJAX GET? Didn't it already happen?
tmplLoader.complete(function () {
$(host).trigger("TemplateLoaded", [path]);
});
}
};
})(jQuery, document);
- Is there supposed to be a semicolon there?
- It seems like the AJAX GET is happening and then an event is getting wired to it – what am I missing here?
It’s optional, but recommended.
AJAX is asynchronous, so it’s very unlikely the request will be already completed right after sending it. So, there’s time to add another callback. And even if there weren’t, it would work anyway, since jQuery implements those callbacks with promises. See example here.