我正在尝试分割一个“ 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
});
});
我正在尝试调用原始文件中的文件,因此将其拉入这些位时,它有时可以工作,但有时它似乎并没有加载某些位,任何提示我在做什么错/是否存在确保文件按页面顺序依次加载“模块/单独文件”的方法?
这听起来像是页面上的异步竞争条件,其中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
});
});
}
);