并非始终加载模块

问题描述 投票:0回答:1

我正在尝试分割一个“ prebid”文件,以便可以将文件与“ bidders”,分析客户端,投标人设置和其他一些地方分开。我基本上已经将原始文件设为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
});
});

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

requirejs
1个回答
1
投票

这听起来像是页面上的异步竞争条件,其中Predbid需要它们完成拍卖之前,requirejs尚未加载模块。根据[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
            });
        });
    }
);
© www.soinside.com 2019 - 2024. All rights reserved.