MattJermyWright
5/21/2015 - 11:52 PM

HP: Ensighten EDL / Promise architecture in triggers

HP: Ensighten EDL / Promise architecture in triggers

function trigger() { // Used as a custom trigger for EDLs
	console.log("PROMISE: Initiating Promise");
    var p = Bootstrapper.when.defer();
    var waitTime = 10; // Default MS to wait until resolved
    (function waitForResolution() {
    	console.log("PROMISE: Waiting for value TestDataTrigger to exist: " + waitTime);
        waitTime = waitTime * 2; // Exponential Backoff - wait longer and longer between calls
        if(!window.TestDataTrigger) {
            setTimeout(waitForResolution,waitTime);
        } else {
        	console.log("PROMISE: Resolved");
            p.resolve();
        }
    })();
    return p.promise;
}
// Execute async function to pull back data - special thanks to my good friend Deep @ Ensighten
function trigger() {
    var p = Bootstrapper.when.defer();
    someExternalProcess.getPageViewData(function(_data) {
        if (typeof(_data) != "undefined") {
            if (typeof(_data.siteName) != "undefined" && typeof(_data.pageHierarchy) != "undefined") {
                window.someGlobalVariable = _data.siteName + ":" + _data.pageHierarchy.join(":");
                p.resolve();
            }
        }
    });
    return p.promise;
}