diff --git a/modules/userId/index.js b/modules/userId/index.js index 89d3ee9e5c7..d3c36dd88cd 100644 --- a/modules/userId/index.js +++ b/modules/userId/index.js @@ -142,6 +142,9 @@ let configRegistry = []; /** @type {Submodule[]} */ let submoduleRegistry = []; +/** @type {(number|undefined)} */ +let timeoutID; + /** @type {(number|undefined)} */ export let syncDelay; @@ -254,6 +257,7 @@ function processSubmoduleCallbacks(submodules, cb) { // clear callback, this prop is used to test if all submodule callbacks are complete below submodule.callback = undefined; }); + clearTimeout(timeoutID); } /** @@ -320,9 +324,9 @@ function initializeSubmodulesAndExecuteCallbacks(continueAuction) { } } utils.logInfo(`${MODULE_NAME} - auction delayed by ${auctionDelay} at most to fetch ids`); - processSubmoduleCallbacks(submodulesWithCallbacks, continueCallback); - setTimeout(continueCallback, auctionDelay); + timeoutID = setTimeout(continueCallback, auctionDelay); + processSubmoduleCallbacks(submodulesWithCallbacks, continueCallback); } else { // wait for auction complete before processing submodule callbacks events.on(CONSTANTS.EVENTS.AUCTION_END, function auctionEndHandler() { diff --git a/test/spec/modules/userId_spec.js b/test/spec/modules/userId_spec.js index f717ef3a714..c257f2375e9 100644 --- a/test/spec/modules/userId_spec.js +++ b/test/spec/modules/userId_spec.js @@ -418,7 +418,7 @@ describe('User ID', function() { beforeEach(function() { sandbox = sinon.createSandbox(); - sandbox.stub(global, 'setTimeout'); + sandbox.stub(global, 'setTimeout').returns(2); sandbox.stub(events, 'on'); // remove cookie @@ -596,8 +596,8 @@ describe('User ID', function() { utils.setCookie('MOCKID', JSON.stringify({'MOCKID': '123456778'}), new Date(Date.now() + 5000).toUTCString()); config.setConfig({ - userSync: { - auctionDelay: 33, + usersync: { + auctionDelay: 200, syncDelay: 77, userIds: [{ name: 'mockId', storage: { name: 'MOCKID', type: 'cookie' }