Циклические зависимости в модулях, использующих requireJs

Чтение документации requireJs,
для исправления циклических зависимостей предлагается использовать exportsдля создания пустого объекта для модуля, который сразу же доступен для ссылки другим модулям.

Я пробую этот код, но он, кажется, не работает. Что не так?

П.С.:
прочитайте комментарии, чтобы увидеть результат,
особенно модуль B внутри вызова setTimeout.


// A module
define([
    'b'
], function (b) {
    console.log('B:', b); // B, Object
    var A = {
        boo: 1
    };

    return A;
});

// B module
define([
    'a',
    'exports'
], function (a, exports) {
    console.log('A:', a); // A, undefined (as I was expecting)
    exports.A = function () {
        return a;
    }

    var B = {
        bar: 1
    };

    setTimeout(function () {
        console.log('exports.A', exports.A()); // exports.A undefined 
                                           // I would like to access the A object
                                           // which is defined in A module
    }, 500);

    return B;
});

// main.js

(function () {

    define([
        'a'
    ], function () {
    });
}());
9
задан Lorraine Bernard 29 June 2012 в 04:47
поделиться