如何组织这个模块模式并优雅地处理ajax调用

时间:2014-08-22 08:38:32

标签: javascript jquery ajax module code-organization

我有几个模块做自己的事情,但需要他们有时访问彼此的属性(不是交织在一起,只有一个json obj)。像这样

var Bananas = (function() {

// Bananas.properties would look like this
// Bananas.properties = { 'color' : 'yellow' };

var methodToGetProperties = function() {
    API.get('bananas')
        .done(function(data) {
                Bananas.properties = data;
            }
    };

    var publiclyReturnProperties = function() {
        if (!Bananas.properties) {
            methodToGetProperties();
        } else {
            return Bananas.properties;
        }
    };

    var doSomethingBananas = function() {

        bananas.doing.something;
        bananaHolder.innerHTML = Bananas.properties;

    }

    var init = function() {
        doSomethingBananas
    }

    return {
        init: init,
        properties: publiclyReturnProperties,
    };

})();

var Apples = (function() {

var doSomethingApples = function() {
    apple.innerHTML = Bananas.properties.color;
};

var init = function() {
    doSomethingApples();
};

return {
    init: init
};

})();

Bananas.init(); Apples.init();

现在,我现在的方法是简单地显示methodToGetProperties,它返回API调用,然后在我调用它的地方使用jQueries延迟方法。但我觉得这会破坏我的代码,到处都是.done。

我一直在阅读单身模式,觉得这可能是我问题的解决方案,但我不确定如何实现它。或者也许在methodToGetProperties中实现回调函数,但对于如何实现无法自信。

非常感谢有关如何整理我的应用的建议。

0 个答案:

没有答案