Javascript 对于绝对需要的文件,Synchonous AJAX调用的替代方案是什么?

Javascript 对于绝对需要的文件,Synchonous AJAX调用的替代方案是什么?,javascript,jquery,ajax,backbone.js,Javascript,Jquery,Ajax,Backbone.js,我目前正在构建一个主干应用程序,在继续执行某些任务之前,我绝对需要一些文件 例如: 用于渲染视图的模板文件 保存整个应用程序副本的language.json文件 现在我想避免的是把我带到地狱的回调。就像我永远不能使用this.template(data)一样,因为如果模板已经加载,我总是必须检查延迟对象/承诺 getTemplate: function(path) { return $.get('/templates/'+path).then(function(src) {

我目前正在构建一个主干应用程序,在继续执行某些任务之前,我绝对需要一些文件

例如:

  • 用于渲染视图的模板文件
  • 保存整个应用程序副本的
    language.json
    文件
  • 现在我想避免的是把我带到地狱的回调。就像我永远不能使用
    this.template(data)
    一样,因为如果模板已经加载,我总是必须检查延迟对象/承诺

    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告诉我主线程上的同步xmlhttprequest已被弃用。经过研究,它确实是从规范中删除(或将被删除)

    现在我的选择是什么? 如何通过JavaScript将绝对需要的文件加载到web应用程序中


    当我总是要等待那些文件时,首先使用AJAX似乎有些奇怪。

    似乎你在尝试实现一个穷人的依赖性管理系统。
    你应该考虑使用一个现存的,比如,或者

    ,好像你正在试图实施一个穷人的依赖管理系统。


    您应该考虑使用现有的一个,例如,或

    使用同步的JavaScript AJAX。在应用程序确定/用户选择语言加载后JSON被加载。想想52种语言——当然我只想加载必要的一种。我不预组合模板,因为我必须在某一点或另一点(例如语言切换、模型更改)重新编译它们。是否有理由不使用模块加载器,如requireJS或browserify?使用普通Javascript AJAX和synchronous。json在应用程序确定/用户选择要加载的语言后加载。想想52种语言——当然我只想加载必要的一种。我不预组合模板,因为我必须在某一点或另一点(例如语言切换、模型更改)重新编译它们。是否有理由不使用模块加载器,如requireJS或browserify?使用普通Javascript AJAX和synchronous。json在应用程序确定/用户选择要加载的语言后加载。想想52种语言——当然我只想加载必要的一种。我不预组合模板,因为我必须在某个时刻重新编译它们(例如语言切换、模型更改)。有没有理由不使用诸如requireJS或browserify之类的模块加载器?好主意-当它解决我的问题时,我会看一看并接受你的答案好主意-当它解决我的问题时,我会看一看并接受你的答案好主意-当它解决我的问题时,我会看一看并接受你的答案