Это определенно неправильная последовательность событий.Я даже не думаю, что pbjs.setTargetingForGPTAsync () вообще нужен, но вам нужно подождать, пока prebid вернется со ставками, прежде чем googletag.pubads (). SetTargeting ("pageurl", "/ home /");
Вы можете решить эту проблему с помощью Обещания, которое будет обернуто вокруг предварительной ставки, и подождать, пока обещание не разрешится внутри, что-то вроде:
var prebidPromiseResponse = new Promise( function(resolve){
pbjs.que.push(function() {
pbjs.addAdUnits(adUnits);
pbjs.requestBids({
bidsBackHandler: function(bids){
if (pbjs.initAdserverSet) return;
pbjs.initAdserverSet = true;
googletag.cmd.push(function() {
pbjs.que.push(function() {
resolve(bids);
});
});
},
timeout: PREBID_TIMEOUT
});
});
})
И затем тег Google
googletag.cmd.push(function() {
googletag.defineSlot('/XXX/slot-300x250-1', [[300, 250]], 'div-gpt-ad-bigblock-1').addService(googletag.pubads());
prebidPromiseResponse.then(function(bids){
googletag.pubads().setTargeting("pageurl", "/home/");
googletag.pubads().enableSingleRequest();
googletag.pubads().disableInitialLoad();
googletag.enableServices();
});
});