我目前正在构建一个骨干应用程序,在继续执行某些任务之前我绝对需要一些文件。
例如:
language.json
文件,其中包含整个应用的副本现在我想要避免的是带回我的回调地狱。就像我永远不会使用this.template(data)
一样,因为如果已经加载了该模板,我总是必须检查一个延迟的对象/ promise。
getTemplate: function(path) {
return $.get('/templates/'+path).then(function(src) {
// is the copy already available?
return App.Deferreds.copy.then(function(copy) {
// insert copy into this html string
src = App.Models.Copy.insertCopy(src, copy);
// return a handlebars tempate with copy pre-filled
return Handlebars.compile(src);
});
});
}
所以我认为我将这些文件的AJAX请求同步并返回文件内容而不是承诺。
getTemplate: function(path) {
var template;
$.ajax({
dataType: "json",
url: '/templates/'+path,
async: false,
success: function(src) {
// insert copy into this html string
src = App.Models.Copy.insertCopy(src, copy);
template = Handlebars.compile(src);
}
});
return template;
}
现在chrome告诉我synchronous xmlhttprequest on the main thread is deprecated
。在研究之后,它确实从规范中删除了(或者将会被删除)。
现在我的替代方案是什么? 如何通过JavaScript将绝对需要的文件加载到Web应用程序中?
当我总是必须等待这些文件时,首先使用AJAX似乎很奇怪。