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