javascript闭包和ajax调用

时间:2013-11-08 15:27:27

标签: javascript ajax closures

我知道异步会改变上下文,我们需要使用闭包才能使它工作,但我无法处理下一个例子:

var loadTemplate = function(options){

    var def = $.Deferred();

    $.ajax({
        url: '/',
        data: { id: options.id },
        type: 'GET'
    }).done(function(template){
        // HERE template's id !== options.id
        $('body').append(template);
        def.resolve();
    });

    return def.promise();
};

我使用不同的ID和多次呼叫loadTempate。但是第一次成功的ajax结果将会加载template,但不等于options.id传递给它。

有什么想法吗?

更新

我有 loader

var loader = function(){

    var _load = function(options){

        $.when(loadTemplate(options), loadAnotherStuff(options))
         .done(function(res){
            // a lot of work here
        });

    };

    return {
        load: _load
    }

};

然后我从页面上调用它:

Loader.load({ id: 1});
Loader.load({ id: 2});
Loader.load({ id: 3});

0 个答案:

没有答案