同步AJAX的替代方案调用绝对需要的文件?

时间:2015-06-10 17:06:35

标签: javascript jquery ajax backbone.js

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

例如:

  1. 用于呈现视图的模板文件
  2. 一个language.json文件,其中包含整个应用的副本
  3. 现在我想要避免的是带回我的回调地狱。就像我永远不会使用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似乎很奇怪。

1 个答案:

答案 0 :(得分:0)

好像你正试图实施一个穷人的依赖管理系统。 您应该考虑使用现有的RequireJSBrowserify