模块不会一直加载

时间:2019-06-22 11:46:02

标签: requirejs

我正在尝试分割一个“ prebid”文件,以便可以将文件与“ bidders”,analytics client,bidder settings和其他一些文件分开。我基本上已经将原始文件设为main.js,并将一些代码拆分为不同的文件,例如

var pbjs = pbjs || {};
 pbjs.que = pbjs.que || [];
 pbjs.que.push(function() {
 pbjs.addAdUnits(adUnits);

requirejs(['bidder_settings']);     

requirejs(['pbjs_config']);

pbjs.requestBids({
 bidsBackHandler: initAdserver,
 timeout: PREBID_TIMEOUT
});
});

我正在尝试调用原始文件中的文件,因此当它拉入这些位时,它有时可以工作,但有时它似乎并未加载某些位,任何提示我在做什么错/是否存在一种确保文件按页面顺序加载“模块/单独文件”的方法?

1 个答案:

答案 0 :(得分:1)

这听起来像您页面上的异步竞争条件,其中requirejs到Prebid需要它们完成拍卖时才加载模块。根据[requirejs docs](https://requirejs.org/docs/api.html#jsfiles),您应该使用回调来运行需要加载模块的代码。

示例:


var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];

requirejs(['bidder_settings', 'pbjs_config', ],
    function (bidder_settings, pbjs_config) {
        pbjs.que.push(function () {
            pbjs.addAdUnits(adUnits);

            requirejs(['bidder_settings']);

            requirejs(['pbjs_config']);

            // do what you need with modules here

            pbjs.requestBids({
                bidsBackHandler: initAdserver, // make sure you utilize disableInitialLoad
                timeout: PREBID_TIMEOUT
            });
        });
    }
);